最近1台云Redis的内存曝高,24G的内存占用19G,而且一直增长,想看那些key比较大,腾讯云Redis有大key分析的结果,但是这台没有,估计要找腾讯云的技术刷新一下数据:
分析大key工具,有个很好的开源工具:redis-rdb-tools
基于python2,比较好用。
安装python2:
yum install gcc libffi-devel python-devel openssl-devel -y
下载安装:python-lzf
安装: pip2和setuptools
下载地址: https://github.com/sripathikrishnan/redis-rdb-tools
分析redis整体的大key
rdb -c memory /root/1 --bytes 1024 -f memory.csv
这里的 /root/1 是下载下来的redis备份文件
读取Redis当个大key
rdb --command justkeyvals --key "MarketGroup:combined.activity:group_list:1088" /root/1
分析大key结果:
如果要对比
rdb -c memory /root/1 --bytes 1024 -f dump1.txt
rdb -c memory /root/2 --bytes 1024 -f dump2.txt
diff dump1.txt dump2.txt
对比结果:
分析结束后的报告文件内容包含了很多列,依次代表了key所属的database编号、key类型、key名称、key大小(单位为字节)。
如果要查找占用内存最高的几个key,只需要对分析报告文件过滤排序即可:
awk -F, '{print $1,$2,$3,$4}' dump.csv | sort -k4 -rn | head -20
总结: 该工具分析redis大key,的确很方便,很实用!