Catalog
  1. 1. rdbtools
  2. 2. 分析
redis内存占用分析

最近要迁移一批 redis, 这些 redis 都是比较老的数据,并且没有很好的使用规范,既没有设置过期,也没有定期清理,导致内存占用越来越大。所以打算分析一下内存占用并清理一下。

redis 没有直接提供命令来获取占用情况,只能获取到总的内存使用量。所以这里我是用了 rdbtools 来分析。

rdbtools

1
2
// 安装工具
pip install rdbtools

分析

1
rdb -c memory dump.rdb > report.csv

分析 rdb 文件,将所有的 key 的信息都写入文件中,然后可以分析文件找出占用内存较大的key。

1
rdb -c memory dump.rdb --largest=5

或者可以直接找占用内存最大的 N 个 key

最后经过分析,需要迁移的库中有 3 个 hash 比较大,每个都有 2000w+ 的记录,几乎占用了 6G 内存,而这个数据是临时数据,并且内部会有很多无用的数据,所以可以直接删除(注意: 不要在生产上删除如此大的key,我是在测试机上删除的,删除一个 key 花了 30 s,非常耗时,具体情况要具体分析)掉了。

Author: 42
Link: http://blog.ikernel.cn/2020/01/15/redis%E5%86%85%E5%AD%98%E5%8D%A0%E7%94%A8%E5%88%86%E6%9E%90/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.

Comment