redis-rdb-tools 是一个 python 的解析 rdb 文件的工具,在分析内存的时候,我们主要用它生成内存快照。
主要有以下三个功能:
1
|
pip install rdbtools python-lzf
|
rdbtools工具包括了3个可执行文件:
rdb – 解析整个rdb文件
redis-memory-for-key – 解析server里的单个key
redis-profiler –解析rdb文件成html格式
1、rdb –help:解析整个rdb文件
1
|
usage: rdb [options] /path/to/dump.rdb
|
2,redis-memory-for-key –help:– 解析server里指定的单个key
1
|
Usage: redis-memory-for-key [options] redis-key
|
3、redis-profiler –help:
1
|
Usage: redis-profiler [options] /path/to/dump.rdb
|
每次运行以上工具时都需要指定一个命令,以指示对解析的RDB数据应执行的操作。操作有:
rdb -c json test-redis.rdb -f test-redis.json
1
|
[root@dev-tools ~]# rdb -c json test-redis.rdb -f test-redis.json
|
正则表达式匹配key,并且仅打印键和值:
rdb -c justkeyvals --key "yundt-cube-center-inventory-test.*" test-redis.rdb
1
|
[root@dev-tools ~]# rdb -c justkeyvals --key "yundt-cube-center-inventory-test.*" test-redis.rdb >demo.txt
|
使用-c memory 运行会生成CSV报告,其中包含该键使用的近似内存。–bytes C 和 –largest N 可用于将输出限制为大于C字节的键或N个最大键。
rdb -c memory test-redis.rdb --bytes 128 -f redis-mem.csv
1
|
[root@dev-tools ~]# rdb -c memory test-redis.rdb --bytes 128 -f redis-mem.csv
|
生成的CSV具有以下列:
注意:内存使用情况是近似的。通常,实际使用的内存将略高于报告的内存。可以按键或数据库编号或数据类型过滤报告。内存报告应有助于检测由应用程序逻辑引起的内存泄漏。它还将帮助优化Redis的内存使用。
对key按内存大小排序
1
|
sort -t ',' -k4 -rn redis-mem.csv >redis-mem-sort.csv
|
查找特定键使用的内存(运行整个内存报告非常耗时),使用redis-memory-for-key
1
|
redis-memory-for-key person:1
|
原文作者:Mister Li
原文链接:https://www.lishuai.fun/2023/05/05/redis-bigkey/
版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可