我有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 扩展之间的区别。我已经阅读了关于这个问题的所有评论,这不是我的重复。