Разница между memcache и python словарем - PullRequest
6 голосов
/ 22 августа 2011

В моем текущем проекте я использую Memcache для хранения пар ключ-значение, но поскольку связь происходит через сокет между моим процессом и Memcache, вызывая огромные задержки. Мы пошли с memcache, потому что у нас было требование хранить большое количество пар ключ-значение. Но теперь я хочу сохранить словарь как глобальную структуру данных в моем процессе. Это хорошая вещь? Потому что словарь будет храниться в адресном пространстве процессов. Предложения, пожалуйста ....

Ответы [ 3 ]

8 голосов
/ 22 августа 2011

Обычная причина использования memcached заключается в том, что вы хотели бы распределить кэш по нескольким машинам, с целью получения как данных доступных на всех машинах, так и используя хранилище всех машин. Если эти требования к вам не относятся и вам нужны только кэшированные данные на одном компьютере, то memcached не предлагает вам всего этого. В этом случае перенос словаря в локальный процесс может быть хорошей идеей.

6 голосов
/ 22 августа 2011

Я написал подробный ответ на этот вопрос на странице memcached "about". Я рисовал картинки и все.

В итоге: если у вас более одного процесса, словарь вам не поможет. Если у вас есть более одного процесса / компьютера, вы будете сжигать тонны памяти, которые могут быть использованы повторно отличным способом, что сэкономит вам много денег и даст вам больше больших ресурсов.

1 голос
/ 22 августа 2011

Если ваши данные не так велики, вы можете просто сбросить свой словарь python в файлы с помощью cPickle.dump или marshal.dump и перезагрузить его из файла с помощью cPickle.load или marshal.load, и если вам нужно дисковое пространство, вы можете использовать bz2 или gzip сжимать / распаковывать во время чтения / перезаписи файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...