redis_rdb_tools工具的介绍:
解析redis的dump.rdb文件,分析内存,以JSON格式导出数据。|
提供的功能有:
1. 生成内存报告
2. 转储文件到JSON
3. 使用标准的diff工具比较两个dump文件
Rdbtools是以python语言开发的。
一)安装
1, pypi安装(推荐)
pip3 install rdbtools
2,源码安装
1# wget https://github.com/sripathikrishnan/redis-rdb-tools/archive/master.zip 2# unzip master 3# cd redis-rdb-tools-master/ 4# python3 setup.py install 5Downloading/unpacking rdbtools 6 Downloading rdbtools-0.1.5.tar.gz 7 Running setup.py egg_info for package rdbtools 8 9 warning: no files found matching 'README.textile' 10Installing collected packages: rdbtools 11 Running setup.py install for rdbtools 12 13 warning: no files found matching 'README.textile' 14 Installing redis-memory-for-key script to /usr/local/python/bin 15 Installing redis-profiler script to /usr/local/python/bin 16 Installing rdb script to /usr/local/python/bin 17Successfully installed rdbtools 18Cleaning up...
二) dump文件数据转换
1rdb --help 2Usage: rdb [options] /path/to/dump.rdb 3 4Example : rdb --command json -k "user.*" /var/redis/6379/dump.rdb 5 6Options: 7 -h, --help show this help message and exit 8 -c FILE, --command=FILE 9 Command to execute. Valid commands are json, diff, 10 justkeys, justkeyvals, memory and protocol 11 -f FILE, --file=FILE Output file 12 -n DBS, --db=DBS Database Number. Multiple databases can be provided. 13 If not specified, all databases will be included. 14 -k KEYS, --key=KEYS Keys to export. This can be a regular expression 15 -o NOT_KEYS, --not-key=NOT_KEYS 16 Keys Not to export. This can be a regular expression 17 -t TYPES, --type=TYPES 18 Data types to include. Possible values are string, 19 hash, set, sortedset, list. Multiple typees can be 20 provided. If not specified, all 21 data types will be returned 22 -b BYTES, --bytes=BYTES 23 Limit memory output to keys greater to or equal to 24 this value (in bytes) 25 -l LARGEST, --largest=LARGEST 26 Limit memory output to only the top N keys (by size) 27 -e ESCAPE, --escape=ESCAPE 28 Escape strings to encoding: raw (default), print, 29 utf8, or base64.
1. 解析dump文件并以json格式标准输出
rdb --command json dump.rdb
2. 只解析符合正则的keys
rdb --command json --key "key1.*" dump.rdb
3. 只解析一a开头的hash且位于2号库
rdb --command json --db 2 --type hash --key "a.*" dump.rdb
三)生成内存报告
生成CSV格式的内存报告。包含的列有:数据库ID,数据类型,key,内存使用量(byte),编码。内存使用量包含key、value和其他值。
注意:内存使用量是近似的。在一般情况下,略低于实际值。
可以根据key或数据库ID或数据类型对报告的内容进行过滤。
内存报告有助于检测是否是应用程序逻辑导致的内存泄露,也有助于优化reids内存使用情况。
rdb -c memory dump.rdb > redis_memory_report.csv
四)单个key使用内存量
有时候,需要查询某个key所使用的内存。如果全部导出来在查找将是很愚蠢且耗时的。对于这种情景,可以使用redis-memory-for-key命令。
如果出现下面信息,需要安装redis模块。redis-memory-for-key依赖redis-py包。
1.安装
1pip3 install redis 2 3redis-memory-for-key 4Usage: redis-memory-for-key [options] redis-key 5Examples : 6redis-memory-for-key user:13423 7redis-memory-for-key -s localhost -p 6379 user:13423 8 9 10redis-memory-for-key: error: Key not specified
2.使用
redis-memory-for-key -s 127.0.0.1 key1
五)比较rdb文件
1rdb --command diff dump.rdb | sort > dump1.txt 2rdb --command diff dump.rdb | sort > dump2.txt 3 4diff dump1.txt dump2.txt