redis内存报告分析(持久化文件rdb的分析)

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}'
相关文章
相关标签/搜索