memcachedのキーを全部ダンプする方法(Perl)
Perlで、memchacnedに登録されているキーと値を全部ダンプしてみる。
少々めんどく、分かりにくいのですが、こちらのサイトを参考にしてみました。
http://blog.utils.jp/2008/06/memcached-2.html
ただ、上記リンク先でのサンプルコードでslabsを取った後に、chunk_size の数値を次のcachedumpの第2引数に使ってますが、多分、used_chunksの数値が正しいと思う。
このusec_chunksで、格納している個数が取れる。
use Cache::Memcached; sub dump{ my $memc = Cache::Memcached->new({ servers => [127.0.0.1:11211] }); my $data; my $slabs .= join "\n", map{ $_->{slabs} } values %{$memc->stats('slabs')->{hosts}}; $slabs=~s/STAT ([0-9]+):used_chunks ([0-9]+)/cachedump $1 $2/g; foreach my $cmd ( grep /cachedump/, split /\r?\n/, $slabs ){ my $items = join "\n", map { $_->{$cmd} } values %{$memc->stats($cmd)->{hosts} }; $items=~s/ITEM (.+) \[.+ b; .+ s\].*\n/$1\n/g; foreach my $k ( split /\r?\n/, $items ){ $data->{$k} = $memc->get($k); } } return $data; }