背景
最近发现项目中用的 redis
内存消耗很大(但是印象中却以为没有这么多的key的内存消耗才对呀?),使用 info
命令可以看到所有key占用的一些内存大小以及key的数量等等,如下图所示(只截图了memory和keyspace部分):
可以发现, info
命令只能看到总的内存大小以及key的数量等。这些对于分析到底哪些或哪类key占用的内存较大是远远不够的!
工具调研
工欲善其事必先利其器!
在各种google搜索之后,发现有一个工具貌似是可以的: redis-rdb-tools 。
于是分头行动,
- 让运维将线上rdb快照文件用scp拷贝到一台测试机上(毕竟在线上机器上操作是不太安全的)
- 我需要用最快最干净的方式来安装一下rdb工具,这里选择直接在python docker中装。
分析之路
根据该工具 , 可以将 rdb 快照文件转换为 csv 格式文件:
拿到csv文件后有两种做法,
- 直接用python <