php 获取所有键值,php获取memcache内所有键值对

网上看了一个,可以取到所有key值。但是发现php手册里写的稍微有点不一样。

php手册 Memcache::getExtendedStats

Note:

这个函数在Memcache2.0.0版本加入。

Note:

(译注)获取Memcache内所有数据方法:首先使用getExtendedStats(‘slabs’)获取到每个服务器上活动slabs分块的id, 然后 使用getExtendedStats(‘cachedump’, $slabid, $limit)来获取每个slab里面缓存的项,其中$slabid是slab分块id, $limit指 期望获取其中的多少条记录。

整合了一下:

function show($host,$port){

$memcache_obj = new Memcache();

$memcache_obj->addServer($host, $port);

//echo $memcache_obj->getversion();

$memcache_obj->set(‘xx’,'xx’);

$memcache_obj->set(‘yy’,'yy’);

$memcache_obj->set(‘zz’,'zz’);

//方式一 网上的

$result = $memcache_obj->getExtendedStats(‘items’);

$items=$result["$host:$port"]['items'];

//方式二 php手册说的

//$result = $memcache_obj->getExtendedStats(‘slabs’);

//$items = $result["$host:$port"];

//print_r($items);exit;

$arr_slabid=array_keys($items);

//print_r($arr_slabid);

//exit;

foreach($arr_slabid as $id)

{

$id=intval($id);

$str=$memcache_obj->getExtendedStats("cachedump",$id,0);

$line=$str["$host:$port"];

if(!empty($line))

{

$keys = array_keys($line);

foreach($keys as $key)

{

$data[$key] = $memcache_obj->get($key);

}

}

}

$memcache_obj->close();

print_r($data);

exit;

}

//调用

show(’127.0.0.1′,11211);

输出:

Array ( [zz] => zz [yy] => yy [xx] => xx )

郁闷的是:

我想连接memcacheq  看队列的内容,比如短信的队列,重试队列,死信队列。

可能想看看重试队列里是哪些短信息,或者死信队列里面是哪些内容,然后判断是不是需要再次弄到短信队列里发送。

show(’192.168.0.249′,22201);

啥也没有,memcacheq 版本0.2.0

另外如果用tokyo trant B+ Tree(支持memcache协议) 作为队列,能不能通过这种方式获取:

show(’192.168.0.249′,1978);

有知道的大侠路过请告知。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值