Дублированные пары ключ-значение, возвращаемые memcached - PullRequest
0 голосов
/ 28 июля 2010

Мы используем кластер серверов memcached для целей кэширования в производстве Django (Python), попробовав cmemcache и python-memcache в качестве API.Проблема заключается в высоком параллелизме, мы начали иметь дублированные пары ключ-значение, то есть у нас есть несколько значений для одного ключа.Есть ли у кого-нибудь похожая ситуация и что такое kill?

Поскольку сами серверы memcached не обмениваются данными друг с другом для поддержания сингулярности пары ключ-значение, эта задача оставлена ​​на усмотрение клиентской библиотеки.поэтому мы пытаемся понять, как работают cmemcache и python-memcache.

Ответы [ 2 ]

1 голос
/ 28 июля 2010

Клиент должен выяснить, на каком сервере memcache стоит значение, основываясь на его ключе. Если вы используете два разных клиента (или две разные конфигурации одного и того же клиента), они могут использовать разные алгоритмы для сопоставления ключа с сервером, таким образом отправляя значения одного и того же ключа на два разных сервера.

Вы можете перейти на pylibmc или python-libmemcached . Когда в прошлом году я проверял клиентов python memcache, оба упомянутых вами клиента либо вышли на пенсию, либо были повреждены, либо оба.

0 голосов
/ 28 июля 2010

Что является более серьезной проблемой: наличие избыточных данных или получение более одного результата для запроса?

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

Однако, если проблема в последнем, почему бы просто не дать каждому хосту, который хранит значения в memcache, уникальный идентификатор и добавить его к любому ключу?

...