我想获取memcached的所有键的名称,但Memcached :: getAllKeys方法总是返回false。 使用contos 6.5 + memcached 1.4.31 + php-memcached-2.2.0 PECL
答案 0 :(得分:1)
看起来新版本的memcached不喜欢也不支持getAllKeys方法。
然而,看起来某人通过设置
使其成功Memcached::OPT_BINARY_PROTOCOL = false
如果它不起作用我认为你必须回到1.4.23版本或安装REDIS:P
答案 1 :(得分:0)
我的实时服务器上遇到了同样的问题。我正在准备测试,向那里的技术人员展示如何复制我的问题:
$m = new Memcached();
$m->addServer(MEMCACHED_SERVER, MEMCACHED_PORT);
echo "added ". MEMCACHED_SERVER. ":". MEMCACHED_PORT. PHP_EOL;
$keys = [];
$stop = 100;
foreach( $m->getAllKeys() as $k){
array_push( $keys, $k );
if( --$stop == 0 ) break;
}
var_dump( $keys );
这将在我的本地R&D服务器上返回100个密钥,但在实时服务器上返回一个空列表。为了向他们展示那里肯定有东西,我在那儿回荡了一个我肯定知道在那里的钥匙:
var_dump( $m->get( "cache:pool:70:230" ));
该行显示有一个键,但是它也使getAllKeys返回了100个条目的列表!我仍然相信这是一个错误,但是有一种解决方法。
编辑:在getallkeys修复此问题之前,找出所有多余的调用:$ m-> getVersion();也会使getAllKeys起作用