Memcached заменить не работает - PullRequest
0 голосов
/ 03 ноября 2010

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

Ответы [ 2 ]

0 голосов
/ 04 ноября 2010

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

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

0 голосов
/ 03 ноября 2010

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

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