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