0%

Redis RDB 分析工具 rdbtools 的安装及使用

安装 rdbtools

该工具需要python支持, 2.73.4+ 都可以.

1
pip install rdbtools

安装相关依赖

在解析redisrbd文件时, 需要安装 python-lzf, 否则解析会非常慢.

Windows环境下, 使用pip安装python-lzf时, 需要安装 VC++ 依赖对源码进行编译, 而这个依赖极其难装…

ps: python 2.7 需要VC++ 9, python 3 需要VC++ 14.

为避免浪费时间, 直接下载编译好的 whl 文件.

whl下载站: Python Extension Packages for Windows - Christoph Gohlke, 打开后浏览器搜索 python-lzf, 定位到下载位置.

根据你的系统版本和python版本下载对应的whl文件. pytho3.7 64Windows下载 python_lzf‑0.2.4‑cp37‑cp37m‑win_amd64.whl .

下载完成后直接安装: pip install python_lzf‑0.2.4‑cp37‑cp37m‑win_amd64.whl

下载rdb

打开redis的配置文件, 搜索dbfilename, 查看rdb文件位置.

如没有自动生成的话, 通过redis-cli登陆到redis终端执行bgsave, 会在后台异步保存当前数据库的数据到rdb文件.

下载rdb文件至本地dump.rdb.

生成rdb的内存报告

rdb内容解析到csv表格中: rdb -c memory dump.rdb -b 10240 -f dump_memory_v2.csv.

参数含义:
-c: 该rdb保存的数据格式, memory 标识内存镜像, 还有json等等..
-b: 使用多大的内存来缓冲解析数据, 分片的解析rdb数据, 防止内存占用过高.
-f: 解析数据存放的文件位置

生成完毕后可通过表格的排序找出内存占用比较大的key.

解析单个 key

解析单个keyvalue到文件:rdb --command json dump.rdb -k "dataenable:router:push" -b 1024 -f dump.json

想命令行直接输出不要后面的 -f dump.json 就行了.

当前这个key会生成9G左右的文件, 没一个编辑器打的开…

这种情况咱们可以在运行命令后一两秒后 ctrl + c 就结束命令, 生成一个10M左右的文件.

我们只需要看看数据结构就行了.