【发布时间】:2016-02-06 15:51:36
【问题描述】:
我已经开始使用 PHP Memcached 客户端的 increment() 方法,并切换到二进制协议。显然,increment()is only supported on the binary protocol。有时,我会看到从增量键返回的垃圾结果。例如:
$memcached = new \Memcached();
$memcached->setOption(\Memcached::OPT_BINARY_PROTOCOL, TRUE);
…
$this->cache->increment($key,1,1);
…
$this->cache->get($key);
输出:
"1\u0000ants1 0 1\r\n1\r\n1\r\n25\r"
考虑到键在最初递增之前不存在,并且1 的初始值被赋予increment() 调用,我希望返回的值是一个整数。相反,返回的字符串看起来像剩下的垃圾,例如该字符串的ants 部分没有相关性。
其他(可能)相关信息:
- 我在一系列不同的键上看到了这一点
- 我们的 Memcached 服务器是一个 AWS Elasticache 实例
- 使用同一缓存节点的其他客户端未使用二进制协议。
- 所有客户端都运行相同的操作系统 (CentOS)、PHP 和 Memcached 版本。
【问题讨论】:
-
您是否会同时使用 32 位和 64 位构建的 EC2 都写入这个 memcached 实例?另外,您使用的是哪个版本的 memcached PHP 绑定?
标签: php memcached amazon-elasticache