2010-11-03 2 views
0

Мы используем memcached из PHP. Я пытался выяснить, почему мы видим некоторые проблемы, в которых memcached, похоже, не обновляется. Можете ли вы подумать о какой-либо причине, почему вызов memcache-> replace() не будет фактически обновлять объект? Мы просто вызываем memcache-> replace() для объекта типа массива. Массив содержит много данных, хотя я не думаю, что мы превысим 1 МБ. Кажется, что сбой произошел с перерывами. В большинстве случаев это работает, но иногда это не очень важно для нас. Кроме того, memcached выполняется синхронно или может быть асинхронным? Если это асинхронно, здесь может быть состояние гонки.Memcached заменить не работает

ответ

0

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

0

Почему вы используете replace, а не set? Семантика вокруг replace позволяет ей сбой, если вы не переписываете данные - не данные, в частности, только некоторые данные.

Если вы хотите переписать данные, используйте cas. Если вы хотите сохранить данные, используйте set.

Смежные вопросы