0
点赞
收藏
分享

微信扫一扫

Redis工具之redis_rdb_tools

  redis_rdb_tools工具的介绍:

解析​​redis​​​的dump.rdb文件,分析内存,以JSON格式导出数据。|
提供的功能有:
  1. 生成内存报告
  2. 转储文件到JSON
  3. 使用标准的diff工具比较两个dump文件

Rdbtools是以​​python​​语言开发的。

 

一)安装

  1, pypi安装(推荐)

pip3 install rdbtools

  2,源码安装

# wget https://github.com/sripathikrishnan/redis-rdb-tools/archive/master.zip
# unzip master
# cd redis-rdb-tools-master/
# python3 setup.py install
Downloading/unpacking rdbtools
Downloading rdbtools-0.1.5.tar.gz
Running setup.py egg_info for package rdbtools

warning: no files found matching 'README.textile'
Installing collected packages: rdbtools
Running setup.py install for rdbtools

warning: no files found matching 'README.textile'
Installing redis-memory-for-key script to /usr/local/python/bin
Installing redis-profiler script to /usr/local/python/bin
Installing rdb script to /usr/local/python/bin
Successfully installed rdbtools
Cleaning up...

 

二) dump文件数据转换

rdb --help
Usage: rdb [options] /path/to/dump.rdb

Example : rdb --command json -k "user.*" /var/redis/6379/dump.rdb

Options:
-h, --help show this help message and exit
-c FILE, --command=FILE
Command to execute. Valid commands are json, diff,
justkeys, justkeyvals, memory and protocol
-f FILE, --file=FILE Output file
-n DBS, --db=DBS Database Number. Multiple databases can be provided.
If not specified, all databases will be included.
-k KEYS, --key=KEYS Keys to export. This can be a regular expression
-o NOT_KEYS, --not-key=NOT_KEYS
Keys Not to export. This can be a regular expression
-t TYPES, --type=TYPES
Data types to include. Possible values are string,
hash, set, sortedset, list. Multiple typees can be
provided. If not specified, all
data types will be returned
-b BYTES, --bytes=BYTES
Limit memory output to keys greater to or equal to
this value (in bytes)
-l LARGEST, --largest=LARGEST
Limit memory output to only the top N keys (by size)
-e ESCAPE, --escape=ESCAPE
Escape strings to encoding: raw (default), print,
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.安装

pip3 install redis

  

redis-memory-for-key 
Usage: redis-memory-for-key [options] redis-key
Examples :
redis-memory-for-key user:13423
redis-memory-for-key -s localhost -p 6379 user:13423


redis-memory-for-key: error: Key not specified

  2.使用

redis-memory-for-key -s 127.0.0.1 key1

 

五)比较rdb文件

rdb --command diff dump.rdb | sort > dump1.txt
rdb --command diff dump.rdb | sort > dump2.txt

diff dump1.txt dump2.txt

 


举报

相关推荐

0 条评论