rdbtools:内存分析
项目地址:https://github.com/sripathikrishnan/redis-rdb-tools
安装:
pip install rdbtools python-lzf
git clone https://github.com/sripathikrishnan/redis-rdb-tools
cd redis-rdb-tools
python setup.py install
如果报下面的错误:
compilation terminated.
error: command 'gcc' failed with exit status 1
解决办法:
yum install python-devel
yum install libevent-devel
easy_install gevent 或者 pip install gevent
还是不行的话,把环境更新下
sudo yum install groupinstall 'development tools'
说明:
#dump.rdb 为实际情况存放目录/redis默认安装在/var/lib/redis/dump.rdb
#生产环境根据需求
导出JSON
#导出JSON:
[root@web01 ~]# rdb --command json /var/lib/redis/dump.rdb
[{
"THE":"this is test value",
"D":"D",
"AAA":"AAA",
"009":"009",
"count":"9"}]
[root@web01 ~]# rdb -c json /var/lib/redis/dump.rdb > redis.json
#导出数据库2中为hash类型,并且以"a"开头的数据
#命令后面直接 > redis.json
rdb -c json --db 2 --type hash --key "a.*" /var/lib/redis/dump.rdb
#测试:
[root@web01 ~]# rdb -c json --db 0 --type string --key "0.*" /var/lib/redis/dump.rdb
[{
"009":"009"}]
导出csv
#导出csv 命令后面直接 > redis.csv
[root@web01 ~]# rdb -c memory /var/lib/redis/dump.rdb
database,type,key,size_in_bytes,encoding,num_elements,len_largest_element,expiry
0,string,THE,72,string,18,18,
0,string,D,56,string,1,1,
0,string,AAA,56,string,3,3,
0,string,009,40,string,3,3,
0,string,count,48,string,8,8,
运行时会 -c memory生成一个CSV报告,
其中包含该密钥使用的大致内存。
--bytes C #做测试时有个key是009导出的时候却是 9这个样子
--largest N
可用于将输出限制为大于C字节的键或N个最大键。
#命令后面直接 > redis.csv
[root@web01 ~]# rdb -c memory /var/lib/redis/dump.rdb --bytes 50
database,type,key,size_in_bytes,encoding,num_elements,len_largest_element,expiry
0,string,D,56,string,1,1,
0,string,AAA,56,string,3,3,
0,string,THE,72,string,18,18,
#根据使用内存大小排序
-n是按照数字大小排序,-r是以相反顺序,-k是指定需要排序的栏位,-t指定栏位分隔符为冒号
sort -t, -k4nr redis.csv
只想查找特定键使用的内存 -a可以加密码 THE 是key
#只想查找特定键使用的内存 -a可以加密码 THE 是key
#redis-memory-for-key -s 10.10.10.20 -p 6379 -a 123456 THE
[root@web01 ~]# redis-memory-for-key -s 10.10.10.20 -p 6379 THE
Key THE
Bytes 72
Type string