2011-08-22 161 views
6

在我當前的項目中,我使用Memcache來存儲鍵值對,但是由於通信發生在我的進程和Memcache之間的套接字上,導致了巨大的延遲。我們使用memcache,因爲我們需要存儲大量的鍵值對。但是現在我想在我的流程中將字典存儲爲全局數據結構。這是一件好事嗎?因爲字典將存儲在進程地址空間中。建議請....memcache和python字典之間的區別

回答

8

通常的原因使用memcached是你想分發高速緩存的多臺計算機之間,既具有數據在所有計算機上可用的目標,同時還利用所有機器的存儲。如果這些要求不適用於您,並且您只需要一臺計算機上的緩存數據,則memcached不會爲您提供那麼多。在這種情況下,將字典移動到本地進程可能是一個好主意。

1

如果你的數據不是那麼大,你可以將你的python字典轉儲到cPickle.dump或marshal.dump文件中,然後用cPickle.load或marshal.load從文件中重新加載它,如果你需要擔心關於磁盤空間,您可以在文件讀取/重寫期間使用bz2或gzip compress/decompress。

6

我在memcached的「about」頁面上寫了a thorough answer。我畫了照片和一切。

總結:如果你有多個進程,字典不會幫你。如果你有多個進程/計算機,你將會消耗大量的內存,這些內存可以以很好的方式被重用,從而爲你節省大量資金,讓你獲得更多更大的東西。

相關問題