如何遍历Memcached中的所有键值


如何遍历Memcached中的所有键值,telnet localhost memcached端口,只能get一个key,不能遍历所有key,有好的办法么?

memcached ruby php

一之濑姬月 13 years, 4 months ago

之前查询项目中超出一定大小的memcache值时,是用php的扩展查的,下边是代码,把判断大于阈值的控制语句去掉,应该就是遍历所有的key了:

   
  <?php
  
/***** CONFIG *****/
$host = 'localhost';
$port = 12321;
$sizeLimit = 5000;
/******************/

$mem = new Memcache();
$mem->connect($host, $port);
$items = $mem->getExtendedStats('items');
$items = $items["$host:$port"]['items'];
// $items2 = $mem->getExtendedStats('stats detail dump');
if (!empty($items)) foreach ($items as $item) {
$number = $item['number'];
$str = $mem->getExtendedStats("cachedump", $number, 0);
$line = $str["$host:$port"];
foreach ($line as $key => $value) {
$v = $mem->get($key);
if (is_string($v)) {
$size = strlen($v);
} else {
$size = strlen(serialize($v));
}
if ($size >= $sizeLimit) {
echo "size:{$size},key:{$key}\n";
}
}
}

?>

Mr.Bone answered 13 years, 4 months ago

Your Answer