Использование нескольких клиентов для доступа к memcache с последовательным распределением ключей с помощью Ketama
У меня проблемы с чтением с сервера memcache с использованием другого клиента Python, отличного от того, который использовался для записи значений в memcache.
У меня есть процесс, который пишет в кеш с помощью pylibmc, используя поведение 'ketama'. У меня есть другой сервис, который читает из memcache, асинхронно, из Tornado IOLoop. Я настроил tornado-memcache для поиска сервера с помощью модуля python-ketama, который является просто оболочкой для библиотеки C общего назначения, libketama.
Соответствующий код инициализации клиента pylibmc:
mc = pylibmc.Client(nodes, behaviors={"no_block": True,
"tcp_nodelay":True,
"ketama": True,
"hash": 'md5'})
У кого-нибудь есть опыт создания чего-то похожего на это (несколько клиентов)? Кажется, что либо хэш-континуумы, используемые двумя клиентами, очень разные, либо ключи хешируются / извлекаются по-разному (оба клиента должны использовать md5).
РЕДАКТИРОВАТЬ: я с тех пор написал письменные тесты, чтобы подтвердить, что это проблема континуума.