最近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,的確很方便,很實用!