memcachedでキー一覧を取得したい時に
実際のサービス運用時はないと思いますが、debugしているときやトラブルの調査をしているときにmemcachedのキー一覧を閲覧したいときはありますよね。
そんな時は、telnetを使って下記のコマンドを打つことでKey一覧を取得することができます。
$ telnet localhost 11211 stats items STAT items:1:number 6 STAT items:1:age 20505 STAT items:1:evicted 0 STAT items:1:evicted_time 0 STAT items:1:outofmemory 0 STAT items:1:tailrepairs 0 stats cachedump 1 100 ITEM foo [9 b; 1264464651 s] ITEM bar [9 b; 1264464649 s]
ざっとこんな感じです。まずは、stats itemsでキャシュされているレコード情報を取得します。続いて、stats cachedumpでは先程得たレコード情報に書いてあるSlabIDを指定してやればいいだけです。ちなみに第二引数は取得する数です。
簡単ですね。
ワンライナーで強引に出してみるとこんな感じ・・・?相当強引ですが・・・なんかいい方法ありますかねぇ。
$ perl -MCache::Memcached -e '$s="localhost:11211";$m=new Cache::Memcached({servers=>[$s]});$res=$m->stats("items");$i=$res->{hosts}{$s}{items};@a=split("\n",$i);while(<@a>){if($_=~/items:([0-9]+)/){$s{$1}=$_}};foreach $key (keys %s){$cm="cachedump $key 100";$res=$m->stats($cm);print "--- \n".$cm."\n";print $res->{hosts}{$s}{$cm}}'