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}'
相關文章
相關標籤/搜索