Redis中统计各种数据大小的方法
如果MySQL数据库比较大的话,我们很容易就能查出是哪些表占用的空间;不过如果Redis内存比较大的话,我们就不太容易查出是哪些(种)键占用的空间了。
有一些工具能够提供必要的帮助,比如redis-rdb-tools可以直接分析RDB文件来生成报告,可惜它不能百分百实现我的需求,而我也不想在它的基础上二次开发。实际上开发一个专用工具非常简单,利用SCAN和DEBUG等命令,没多少行代码就能实现:
<?php
$patterns=array( 'foo:.+', 'bar:.+', '.+', );
$redis=newRedis(); $redis->setOption(Redis::OPT_SCAN,Redis::SCAN_RETRY);
$result=array_fill_keys($patterns,0);
while($keys=$redis->scan($it,$match='*',$count=1000)){ foreach($keysas$key){ foreach($patternsas$pattern){ if(preg_match("/^{$pattern}$/",$key)){ if($v=$redis->debug($key)){ $result[$pattern]+=$v['serializedlength']; }
break; } } } }
var_dump($result);
?>
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短