Лучшая практика с memcache / php - несколько узлов memcache - PullRequest
2 голосов
/ 07 декабря 2010

Итак, я работаю над веб-приложением, которое должно быть построено для масштабируемости.Он хранит частые запросы MySQL в кеш.У меня есть почти все, что собрано и готово к работе, но я обеспокоен передовой практикой обработки кеширования данных.Я разговаривал с несколькими людьми, и один из них предложил разделить каждый ключ / значение по всем узлам memcache.

То есть, если я сохраню пример: 'somekey', 'это значение'

это будет разделено, скажем, на 3 сервера memcache.

Это лучший способ?или memcache больше строится на отношениях 1: 1?Например.

сохранить значение на сервере A, пока оно не выйдет из строя - перейдите на сервер B и сохраните его там.

Это мое текущее понимание проведенного мною исследования и опыт работы с memcache..

Может ли кто-нибудь указать мне правильное направление в этом направлении и дать мне знать, какой путь лучше, или если я полностью разобрался с этим.

Спасибо

1 Ответ

0 голосов
/ 09 февраля 2011

Я бы использовал последовательное хеширование в php

См. http://php.net/manual/en/memcached.constants.php

Таким образом, если сервер memcache выходит из строя, ваши ключи не будут перераспределены:)

По моему опыту, серверы memcache были ДЕЙСТВИТЕЛЬНО надежны и, как правило, перезапускаются из-за обновлений ОС и т. Д.

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

IE Memcache серверы A, B

A: set key = 1234, value = 'abc', expires = 1 day
B:
after a time
A: vanishes
B: get key = 1234
   returns nothing
B: set key = 1234, value = 'def', exipres = 1 day
after more time
A: comes back!

get_key (1234) возвращает 'abc', потому что A теперь доступен.!

-daniel

...