Таким образом, 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%, поэтому нет причин для очистки ключей, и даже если бы они были, они должны возвращаться как ложные, а не нулевые.
Кто-нибудь еще сталкивался с этой проблемой?