前回のエントリ memcached でキーの列挙 (2)
こんなん作りました。memcached-tool ぽく。既にあったらすません~。
http://code.google.com/p/memcached-keys/
2011年8月23日火曜日
2008年6月4日水曜日
memcached でキーの列挙(2)
前回(memcached でキーの列挙)の続きです。サンプルの Perl コードです。ちょこっといじればイベント駆動のモジュールが作れそう。。
my $size = 1000;
my $cache = Cache::Memcached->new({
servers => ['localhost:11211'],
});
my $slabs = $cache->stats('slabs');
my @stat_ids = ();
for my $host (keys %{$slabs->{hosts}}) {
my $slabs_text = $slabs->{hosts}->{$host}->{slabs};
my @lines = split("\n", $slabs_text);
for my $line (@lines) {
($line =~ /STAT ([0-9]+):chunk_size [0-9]+/) or next;
push(@stat_ids, $1);
}
}
for my $stat_id (@stat_ids) {
my $cmd = "cachedump $stat_id $size";
print "[$cmd]\n";
my $cachedump = $cache->stats($cmd);
for my $host (keys %{$cachedump->{hosts}}) {
my $cachedump_text = $cachedump->{hosts}->{$host}->{$cmd};
my @lines = split("\n", $cachedump_text);
for my $line (@lines) {
($line =~ /^ITEM (.+) \[(.+) b; (.+) s\]/) or next;
my ($key, $b, $s) = ($1, $2, $3);
print "\t$key [$b bytes]\n";
}
}
}
2008年6月3日火曜日
memcached でキーの列挙
memcached で、キーの列挙ができないか調査していたところ、PHPで実現している方のブログ記事を見つけました。( http://blog.cles.jp/item/2141 )
これ Perl の Cache::Memcached でできるだろうと思って挑戦したのですが、何故か stats cachedump が動作しないんです。
そこで telnet を使って直接コマンドをたたいてみることにしました。まずは接続。。
次に stats slabs コマンドを実行してみます。
この出力結果のうちの STAT {数字} の部分を使って stats cachedump コマンドを実行します。STAT {数字} は連番ではないみたいなので注意が必要です。
おお。キーの列挙できるじゃん。ちゅうことで Cache::Memcached のソースみたら stats メソッドは引数を最初の 1個しか使ってないのか。
memcached でキーの列挙(2)へ続く
これ Perl の Cache::Memcached でできるだろうと思って挑戦したのですが、何故か stats cachedump が動作しないんです。
そこで telnet を使って直接コマンドをたたいてみることにしました。まずは接続。。
> telnet localhost 11211
次に stats slabs コマンドを実行してみます。
stats slabs
STAT 1:chunk_size 80
STAT 1:chunks_per_page 13107
STAT 1:total_pages 1
STAT 1:total_chunks 13107
STAT 1:used_chunks 13107
STAT 1:free_chunks 0
STAT 1:free_chunks_end 13065
STAT 2:chunk_size 100
STAT 2:chunks_per_page 10485
STAT 2:total_pages 1
STAT 2:total_chunks 10485
STAT 2:used_chunks 10485
STAT 2:free_chunks 0
STAT 2:free_chunks_end 10447
.....
STAT active_slabs 16
STAT total_malloced 16763844
END
この出力結果のうちの STAT {数字} の部分を使って stats cachedump コマンドを実行します。STAT {数字} は連番ではないみたいなので注意が必要です。
stats cachedump {数字} {ダンプするキーの最大数}
ITEM {キー} [{統計情報}]
.....
END
おお。キーの列挙できるじゃん。ちゅうことで Cache::Memcached のソースみたら stats メソッドは引数を最初の 1個しか使ってないのか。
# 中身も見ずにこういう呼び出しをしてしまってた。
$cache->stats('cachedump', 1, 100);
# こうすりゃ良かったんすね。
$cache->stats('cachedump 1 100');
memcached でキーの列挙(2)へ続く
登録:
投稿 (Atom)