Redis内存分析工具-RDBtools安装&使用

发布时间 2023-12-13 10:54:24作者: RollBack2010

是什么

Rdbtools提供了一组工具,可以帮助用户分析、导入和转换Redis的RDB文件。它的功能包括:

  1. 解析RDB文件: Rdbtools可以解析RDB文件,将其转换成人类可读的文本格式,以便用户更容易理解和分析其中的数据。
  2. 数据导入和转换: 用户可以使用Rdbtools将RDB文件导入到其他数据库系统中,或者将其转换成其他格式,以便于进一步处理和分析。
  3. 数据恢复: 在一些情况下,如果Redis数据库出现问题,用户可能希望从RDB文件中恢复数据。Rdbtools提供了相关的功能,帮助用户进行数据恢复操作。

安装

以下操作在CentOS7.9操作

安装Python(已安装忽略,低版本需要卸载重安)

yum install -y python3 python3-devel python3-libs python3-tools
python3 -m ensurepip
python3 -m pip install --upgrade pip

安装GCC(已安装忽略)

yum install gcc

安装rdbtools和python-lzf

pip install rdbtools python-lzf

安装成功页面

image-20231211173348576

基础命令

rdbtools 有三个基础命令:

rdb -- 解析rdb文件
redis-memory-for-key -- 解析server里的单个key
redis-profiler --解析rdb文件成html格式

常用示例

使用rdbtools工具分析rdb文件

查找大key与处理

rdb      -c      memory     -l                  3           rdbFile.rdb
#固定语法 命令    内存分析 内存按大小输出        输出前X个KEY    服务器rdb文件路径

执行以上命令得到结果

#第几个数据库,数据类型,key名,占用内存空间(单位:bytes),存储编码,元素个数,      值长度  ,         过期时间
database,    type,     key,   size_in_bytes,         encoding,num_elements,len_largest_element,expiry
0,hash,backUp,4313880220,hashtable,653,8792544,
0,string,StringKey,3313880220,string,179556,179556,2023-12-09T08:52:52.702000
  • 分析&处理

    根据上一步分析的Key进行排查,确定系统优化方案;

    如果要删除现有存储的数据,需根据数据类型分别处理,例如:
    “backUp” key类型为hash,并且占用了将近4G内存,如果直接使用"del backUp"删除,会导致Redis阻塞,所以需要使用"hdel、hlen"命令逐步删除
    "StringKey" key类型为String,并且占用了将近3G内存,如果直接删除,也会阻塞Redis,所以需要在业务低谷时执行“del”命令,如果是Redis版本在4.0以上,还可以使用异步删除“UNLINK key1 key2 key3 ... keyN”

导出CVS文件

 rdb      -c      memory    -f   a.csv      -l                  10            rdbFile.rdb
 #固定语法 命令    内存分析    导出 导出文件 内存按大小输出        输出前X个KEY    服务器rdb文件路径

直连Redis服务查询单个key详情

 redis-memory-for-key -s 192.168.1.1 -p 7002  keyName
 #固定语法              server  ip    服务端口  要查的Key

生成HTML图表

#生成全部rdb文件
redis-profiler -f rdb.html rdbFile.rdb
#固定语法       输出html     要分析的rdb文件

更多用法见Help

rdb -h

redis-memory-for-key -h

redis-profiler -h