Итак, 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, если ключ не существует или срок его действия истек. Так почему же он возвращает «null»?
Это происходит даже для ключей, которые я только что записал в memcache. Я кэширую что-то в течение 24 часов, а через минуту вместо этого получаю «ноль». Memcache не заполнен даже на 50%, поэтому нет причин для очистки ключей, и даже если бы они были, они должны вернуться как ложные, а не нулевые.
Кто-нибудь еще сталкивался с этой проблемой?