rdbtools 是解析Redis rdb文件、分析其内存,导出其数据等比較好的工具,用python編寫。python
Github地址:mysql
https://github.com/sripathikrishnan/redis-rdb-toolslinux
1、安裝方法:git
pip install rdbtools github
2、使用方法:正则表达式
1.幫助命令 rdb --helpredis
-c FILE #指定rdb文件;sql
-f FILE #指定导出文件;数据库
-n DBS #解析指定数据库,若是不指定默认包含全部;json
-k KEYS #指定须要导出的KEY,能够使用正则表达式;
-o NOT_KEYS #指定不须要导出的KEY,能够使用正则表达式;
-t TYPES #指定解析的数据类型,可能的值有:string,hash,set,sortedset,list;能够提供多个类型,若是没有指定,全部数据类型都返回;
-b BYTES #限制內存输出的大小,大於或者等於這個值;
-l LARGEST #根据內存輸出大小top N個 key;
-e ESCAPE #指定输出编码,默认RAW;
2.解析dumo.rdb文件,以jsno格式輸出
rdb -c json /var/lib/redis/dump.rdb
rdb -c json /var/lib/redis/dump.rdb > /var/lib/redis/rdbtools.json
(json將輸出保存到指定文件中)
3.只解析輸出符合正则的keys
rdb -c json -k "my" /var/lib/redis/dump.rdb
4.根據類型解釋輸出(-t 命令)
rdb -c json -t set /var/lib/redis/6379/dump.rdb
5.生成CSV格式的内存报告。包含的列有:数据库ID,数据类型,key,内存使用量(byte),编码。内存使用量包含key、value和其余值
sudo rdb -c memory /var/lib/redis/6379/dump.rdb > /var/lib/redis/6379/memory.csv
6.生成CSV格式的内存报告,内存使用量128以上的(-b命令)
sudo rdb -c memory -b 128 /vagrant/dump.rdb
7.生成CSV格式的内存报告,輸出内存使用前10 (-l命令)
sudo rdb -c memory -l 10 /vagrant/dump.rdb
8.单个key所使用的内存量 (redis-memory-for-key 命令)
redis-memory-for-key -s 192.168.50.59 -p 6379 Summer_Gamebox_WG_all
3、通常分析流程
1.用 生成內存報告 rdb -c memory
sudo rdb -c memory /vagrant/dump.rdb >test.csv
(rdb數據文件大,生成時間就長,通常1.56G的要40來分鐘)
2.報告生成后,用linuxsort命令排序,生成有順序的文件,查看耗內存最高的key有哪些,找出異常數據
sudo sort -k4nr -t , test.csv > sort.txt
3.例如,查詢得知‘send_msg’這個key的hashtable類型的集合不少耗內存最大的,統計總共耗了多少
sudo cat sort.txt | grep ‘send_msg’ | grep ‘hashtable’ | awk -F ',' '{sum += $4};END {print sum}'