Archive for 5 月 24th, 2010

月曜日, 5 月 24th, 2010 | Author: djodjo

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;
}

Category: 未分類  | Leave a Comment