memcachedに格納されているキーの長さを取得する方法

memcachedに格納されているキーの長さ一覧というか、キーの長さの平均値をとりたくなったのでとってみた。
まずは全部をダンプさせる。

%memcached-tool memcachedserv.xxxxx.xxx dump > ~/tmp/memcached.dump

場合によっては結構時間がかかる。

適当にmoreとかで中身を確認して、キーの形式に着目してやる。今回自分のケースだと

$pattern = 'add s:[0-9]+:"11111001(.+)"';

この正規表現であててやった。

<?php
$mi = new Memcache();
$mi->connect('xxxx.l2tp.org');
$ret = $mi->getExtendedStats();
var_dump($ret);
$pattern = 'add s:[0-9]+:"11111001(.+)"';
$lines = file('/usr/home/xxxx/tmp/memcached.dump');
foreach($lines as $line){
if(eregi($pattern, $line, $regs)){
if(mb_strlen($regs[1], 'UTF-8') > 19){
var_dump($regs[1]);
}
$lensum += mb_strlen($regs[1], 'UTF-8');
$lc++;
}
}
var_dump($lensum);
var_dump($lc);
var_dump($lensum/$lc);
?>

コメントを残す