ラベル

2012年11月6日火曜日

memcachedのキーをDumpする


同じようなことやってる人がいたからオレも書いた。



#!/usr/bin/perl use utf8; use Cache::Memcached; use POSIX q/strftime/; unless ($ARGV[0]){ print "usage:memd {address:port}"; exit 1; } my $hosts = $ARGV[0]; my $cache = Cache::Memcached->new({ servers => [$hosts], }) or die("connection failed."); my $slabs = $cache->stats('slabs'); my %slabs; map{ $slabs{$1} = $2 if $_ =~ /STAT ([0-9]+):used_chunks ([0-9]+)/ } split "\n" , $slabs->{hosts}->{$hosts}->{slabs}; foreach (keys %slabs){ my $cmd = "cachedump $_ ".$slabs{$_}; my $dump = $cache->stats($cmd); foreach ( split "\n",$dump->{hosts}->{$hosts}->{$cmd}){ if($_ =~ /ITEM (.+) \[(.*) b; (.*) /){ print "$1 ","$2Byte ", "expire ".strftime("%Y/%m/%d %H:%M:%S",localtime($3)), "\n" if time < $3; }; } } 1;

0 件のコメント: