redis-rdb-tools分析redis内存使用量

zabbix报警redis内存告急,在Redis配置文件中(一般叫Redis.conf),通过设置“maxmemory”属性的值可以限制Redis最大使用的内存,修改后重启实例生效。 也可以使用客户端命令config set maxmemory 去修改值,这个命令是立即生效的,但会在重启后会失效,需要使用config rewrite命令去刷新配置文件。 若是启用了Redis快照功能,应该设置“maxmemory”值为系统可使用内存的45%,因为快照时需要一倍的内存来复制整个数据集,也就是说如果当前已使用45%,在快照期间会变成95%(45%+45%+5%),其中5%是预留给其他的开销。 如果没开启快照功能,maxmemory最高能设置为系统可用内存的95%。

解决办法:通过redis-rdb-tools分析redis内存使用量。

wget https://github.com/sripathikrishnan/redis-rdb-tools/archive/master.zip

unzip master
cd redis-rdb-tools-master/
python setup.py install
导出excel命令:
rdb -c memory dump.rdb >/tmp/memory20161018.csv
导出后的表格为整个rdb的数据,通过grep或awk之后,即可统计出较大的key。

database type key size_in_bytes encoding num_elements len_largest_element
0 list LIST_1 8428842346 quicklist 15789816 571
0 hash HASH_1 546987596 hashtable 108 9339385
0 hash HASH_2 144521196 hashtable 69 2387996
0 hash HASH_3 106840876 hashtable 62 2098227
0 hash HASH_4 55104748 hashtable 89 973438
0 hash HASH_5 50333660 hashtable 26 2053790
0 hash HASH_6 37103084 hashtable 57 812489
0 hash HASH_7 2639004 hashtable 132442 8
0 list LIST_2 231111 quicklist 424 571
0 hash ScoreKey 52316 hashtable 617 8
0 hash Reco2 49732 hashtable 617 8
0 hash Reco2 49732 hashtable 617 8
0 set SET_TOKEN 4196 hashtable 49 44

发表评论

邮箱地址不会被公开。