Memcached set () завершается ошибкой: WRITE FAILURE - PullRequest
1 голос
/ 17 февраля 2010

Таким образом, Memcached не может записать определенные ключи, getResultMessage () говорит WRITE FAILURE
Я использую это в настройках:

$this->mmcache = new Memcached();
$this->mmcache->addServer('localhost',11211, 100);
$this->mmcache->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
$this->mmcache->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_IGBINARY);
$this->mmcache->setOption(Memcached::OPT_COMPRESSION, false);

Некоторые ключи работают каждый раз, а некоторые - каждый раз. Я даже пытался кодировать ключи в base64, но они все равно не работают, даже такая простая функция, как

for($i=1;$i<100;$i++) {
  $this->mmcache->set('testkey'.$i,$i*100,600);
}

возвращает WRITE FAILURE каждый раз.

Отключение двоичного протокола просто изменяет ошибку на HOSTNAME LOOKUP FAILURE, но 50% ключей все еще работают, и я просто не могу понять, какие будут, а какие не будут работать.

Извините, я задал неправильный вопрос раньше.


оригинальный вопрос: Memcache в v1.4.4, возвращающий NULL
Я храню и читаю большие объемы данных в memcache из php. Я использую обычное соединение с сервером Memcache, который работает на локальном хосте. Я использую Memcache 1.4.4

Но из 50-60 ключей, которые я читаю из memcache за один запуск скрипта, более 50% возвращаются как null. Согласно php.net, Memcache::get() должен возвращать false, если ключ не существует или срок его действия истек. Так почему же он возвращает «ноль»?

Это происходит даже для ключей, которые я только что написал в memcache. Я кеширую что-то в течение 24 часов и через минуту я получаю «ноль» вместо этого. Memcache не заполнен даже на 50%, поэтому нет причин для очистки ключей, и даже если бы они были, они должны возвращаться как ложные, а не нулевые.

Кто-нибудь еще сталкивался с этой проблемой?

Ответы [ 2 ]

3 голосов
/ 15 февраля 2012

У меня было та же проблема сегодня.

Оказывается, вам нужно использовать 127.0.0.1 вместо localhost.

Действительно раздражает.

2 голосов
/ 17 февраля 2010

Звучит так, как будто вы достигаете предела памяти в Memcached. Какие вещи ты пишешь? Насколько они велики?

Если ваш сервер Memcached заполнен или почти заполнен, я могу даже ожидать, что это произойдет.

С другой стороны, дважды проверьте, что у вас не установлен брандмауэр ограничения скорости. Возможно, он видит, как ты стучишь в свою коробку Memcached и бесится.

Наконец, убедитесь, что вы закрываете соединение с Memcached, когда закончите. Если оставить слишком много открытых, все станет ужасно.

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