У меня есть memcache
(установлено на php5) и memcached
(установлено на php7.2 через libmemcached), оба подключаются к одному и тому же memcached daemon/server
.
Memcache::get
отлично работает и извлекает данные в соответствии с моими ожиданиями. Но когда я делаю Memcached::get
, он всегда возвращает 0.
Я проверил, что у меня отключено сжатие при использовании обоих расширений. Я также пытался переключаться между Memcached::OPT_BINARY_PROTOCOL
и memcached
, и он по-прежнему дает тот же нулевой результат.
Интересно, что когда я добавляю пару ключ/значение, используя расширение memcached
, и извлекаю его, используя тот же ключ, я получаю правильное/правильное значение, которое я добавил.
Теперь я не знаю, в чем может быть причина того, что он не работает с данными, уже хранящимися на сервере memcached.
EDIT 1: я подключился к моему серверу memcached через telnet и убедился, что он действительно имеет значение. Кроме того, я проверил, что код результата, возвращаемый Memcached::getResultCode
, не является ошибкой.
РЕДАКТИРОВАНИЕ 2: я, возможно, еще больше сузил его. Я заметил, что когда я сохраняю ["key1" => "value1"]
из скрипта memcache-php5
, он правильно сохраняет и извлекает данные. Но когда я пытаюсь получить те же данные с помощью скрипта memcached-php7.1
, он возвращает 0.
После этого я удалил данные с ключом «key1» с сервера memcached с помощью telnet. Затем я сохранил ["key1" => "value1"]
с помощью скрипта memcached-php7.1
, и он может правильно получить эти данные. Но при попытке получить его с помощью скрипта memcache-php5
он возвращает тип сериализованных данных "a:1:{s:4:\"key1\";s:6:\"value1\";}"
(это вывод json_encoded)
Поэтому для обновления мне, возможно, придется удалить/сбросить все и заново создать записи на сервере memcached, используя расширение memcached.
P.S. : Я знаю разницу между обоими этими расширениями php. Я прочитал все комментарии к этому вопросу, и это не мой дубликат. .