用指令,可以參考這篇「用指令查看 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
沒有留言:
張貼留言