如果数据库比较大,我们可以很容易地找到占据的表,但如果redis内存大,很不容易找到了什么样的空间需要。

有一些工具,例如提供必要的帮助,Redis的RDB工具可以直接分析RDB文件生成报告,但不幸的是,它无法达到我们的需要100%,我不想发展它在两次的基础。事实上,开发专用的工具很简单,如扫描和调试,没有行代码可以实现。

复制代码代码如下所示:

< PHP

$模式=数组(

+:+,

酒吧:+,

+,

);

Redis =新的Redis(美元);

$ redis -> SetOption(redis::::opt_scan,Redis scan_retry);

结果= array_fill_keys美元(合模式,0);

而($键= $ redis ->扫描($,$匹配= *,$数= 1000)){

foreach($键达关键){

foreach(美元美元模式模式){

如果(preg_match( / ^ { $模式} $ /

如果($ V = $ redis ->调试($键)){

结果{ } =美元美元美元模式V { 'serializedlength};

}

打破;

}

}

}

}

var_dump($结果);

>



当然,前提是您需要提前总结可能的关键模式,而简单但不严格的方法是监视器:

复制代码代码如下所示:

壳> / / /路径使用CLI监视|

awk -F2美元~ '添加|集|店|推{ }印4美元



更重要的是,我们应该注意的是,由于serializedlength返回调试后的长度的序列化,因此最终计算值比实际的内存占用,但考虑到相对规模仍有参考意义。