2011-08-22 28 views
6

Nel mio progetto corrente, sto usando Memcache per memorizzare coppie chiave-valore, ma poiché la comunicazione avviene attraverso il socket tra il mio processo e Memcache causando le enormi latenze. Siamo andati con memcache perché avevamo bisogno di memorizzare una grande quantità di coppie chiave-valore. Ma ora voglio archiviare il dizionario come infrastruttura globale nel mio processo. è una cosa buona? Perché il dizionario verrà archiviato nello spazio degli indirizzi dei processi. Suggerimenti per favore ....Differenza tra memcache e dizionario python

risposta

8

Il solito motivo di usare memcached è che si desidera distribuire la cache tra più macchine, con l'obiettivo di entrambi con i dati disponibili su tutte le macchine, mentre utilizzando anche il archivio di tutte le macchine. Se tali requisiti non si applicano a te e hai solo bisogno dei dati memorizzati nella cache su una singola macchina, allora memcached non ti offre molto di più. In tal caso, spostare il dizionario nel processo locale potrebbe essere una buona idea.

1

Se i dati non sono così grandi, si può semplicemente scaricare il dizionario Python in file con cPickle.dump o marshal.dump e, ricaricarlo da file con cPickle.load o marshal.load, e se è necessario preoccuparsi riguardo lo spazio su disco, puoi usare bz2 o gzip compress/decompress durante la lettura/riscrittura dei file.

6

Ho scritto a thorough answer a questo nella pagina "about" memcached. Ho disegnato immagini e tutto.

In sintesi: se si dispone di più di un processo, il dizionario non sarà di aiuto. Se hai più di un processo/computer, brucerai tonnellate di memoria che potrebbero essere riutilizzate in grandi modi che ti fanno risparmiare un sacco di soldi e ti procurano cose più grandi.