我有memcache
(安装在 php5 上)和memcached
(通过 libmemcached 安装在 php7.2 上)都连接到同一个memcached daemon/server
.
Memcache::get
工作得很好,并按照我的期望获取数据。但是当我这样做时Memcached::get
,它总是返回 0。
我检查了使用这两个扩展时是否已关闭压缩。Memcached::OPT_BINARY_PROTOCOL
我也尝试在for之间切换memcached
,它仍然产生相同的 null 结果。
有趣的是,当我使用memcached
扩展添加键/值对并使用相同的键检索时,我得到了我添加的正确/正确的值。
我现在一无所知,这可能是它不适用于已存储在 memcached 服务器中的数据的原因。
编辑 1:我对我的 memcached 服务器进行了 telnet,并检查了它是否确实具有价值。另外,我检查了返回的结果代码Memcached::getResultCode
不是任何类型的失败。
编辑2:我可能进一步缩小了范围。我注意到当我["key1" => "value1"]
从memcache-php5
脚本中保存时,它会正确存储和检索数据。但是当我尝试使用memcached-php7.1
脚本检索相同的数据时,它返回 0。
之后,我使用 telnet 从 memcached 服务器中删除了带有键“key1”的数据。然后我["key1" => "value1"]
使用memcached-php7.1
脚本保存,它可以正确检索该数据。但是当尝试使用memcache-php5
脚本检索它时,它会返回某种序列化数据"a:1:{s:4:\"key1\";s:6:\"value1\";}"
(这是 json_encoded 输出)
因此,为了升级,我可能必须删除/刷新所有内容并使用 memcached 扩展在 memcached 服务器中重新创建条目。
PS:我知道这两个 php 扩展之间的区别。我已经阅读了关于这个问题的所有评论,这不是我的重复。