用指令,可以參考這篇「用指令查看 memcached 的 key 與快取資料」。
用 PHP,
如果使用 memcached(libmemcached) extension,可直接使用內建的 Memcached::getAllKeys 方法。
但如果是使用 memcache extension,則須自己處理,
範例如下:
$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect to memcache server");
$allKeys = array();
$allItems = $memcache->getExtendedStats('items'); // 取得所有 item
#var_dump($allItems);
foreach($allItems as $tmpserver => $rows) {
foreach($rows["items"] as $slabId => $v){ // 由 item 取得所有 slab id
echo "slab id: {$slabId} \n";
$cdump = $memcache->getExtendedStats('cachedump', $slabId);//由slab id取得所有cachedump
foreach($cdump AS $server => $arrVal) { // 由 cachedump 取得所有 key
echo " server => {$server} \n";
if($arrVal){
foreach($arrVal AS $key => $v) {
echo " key: {$key} \n";
$allKeys[$server][] = $key;
}
}else{
// 使用Memcache::addServer增加多個server到connection pool,才可能執行到這裡
echo " 此server無此slab id \n";
}
}
echo "\n";
}
}
// 全部的 key
var_dump($allKeys);
輸出結果:
slab id: 12
server => 127.0.0.1:11211
key: T123
slab id: 13
server => 127.0.0.1:11211
key: A_2
slab id: 16
server => 127.0.0.1:11211
key: A_1
參考:
http://php.net/manual/en/memcache.getextendedstats.php#98161
沒有留言:
張貼留言