在 Mac 系统中安装并使用 redis-rdb-tools
(用于分析 Redis RDB 文件),可按照以下步骤操作:
一、安装 redis-rdb-tools
-
确保 Python 环境
redis-rdb-tools
依赖 Python 3.6 及以上版本。Mac 系统通常预装 Python,但需检查版本:python3 --version
若未安装 Python3,可通过 Homebrew 安装:
brew install python
-
使用 pip 安装 rdbtools
通过国内镜像加速安装(推荐清华源):pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple rdbtools
此步骤会安装核心工具
rdb
,用于解析 RDB 文件。 -
加速解析(可选:安装 python-lzf)
安装python-lzf
可显著提升解析速度,但需编译环境支持:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple python-lzf
- 若编译报错:需安装 Xcode 命令行工具:
xcode-select --install
- 若编译报错:需安装 Xcode 命令行工具:
二、生成并分析 RDB 文件
-
获取 Redis RDB 文件
- 确认 Redis 配置文件
redis.conf
中dir
和dbfilename
的路径(默认路径如/usr/local/redis-3.2.8/db/dump.rdb
)。 - 若需手动生成 RDB 快照,执行命令:
redis-cli BGSAVE
- 确认 Redis 配置文件
-
使用 rdb 工具分析
执行以下命令生成内存报告(CSV 格式):rdb -c memory /path/to/dump.rdb --bytes 1024 > report.csv
--bytes 1024
:过滤内存占用超过 1KB 的 Key。- 报告包含 Key 名称、类型、内存大小、元素数量等信息。
-
常用分析场景
- 查找大 Key:按内存排序 CSV 文件,定位占用高的 Key。
- 统计 Key 模式:筛选高频前缀(如
user:*
),排查异常写入逻辑。
三、解决常见问题
-
权限问题
若安装时提示权限不足,可添加--user
参数或使用虚拟环境:pip3 install --user rdbtools
-
依赖冲突
建议使用venv
隔离 Python 环境:python3 -m venv myenv source myenv/bin/activate pip install rdbtools
-
RDB 文件路径
若找不到 RDB 文件,检查 Redis 配置文件中的dir
和dbfilename
参数,或通过命令查询:redis-cli CONFIG GET dir
四、替代方案(可视化工具)
若需图形化分析,可尝试以下工具:
- RedisInsight:官方可视化工具,支持内存分析、实时监控。
- rdr:开源 RDB 文件解析器,提供 Web 界面展示 Key 分布。
五、增量扫描对比法
适用场景:适合非实时性需求,通过对比不同时间点的 Key 分布差异来定位增长热点。
首次快照生成
在起始时间点(如 24 小时前)执行 BGSAVE 生成 RDB 文件,保存为 dump_start.rdb。
结束快照生成
在结束时间点执行 BGSAVE,保存为 dump_end.rdb。
使用 RDB 工具对比差异
通过 redis-rdb-tools 或 rdb 工具解析两个 RDB 文件,生成 Key 列表并对比差异:
bash
# 解析起始快照
rdb --command json dump_start.rdb > start.json
# 解析结束快照
rdb --command json dump_end.rdb > end.json
# 使用 diff 工具对比 Key 数量变化
diff start.json end.json | grep "SET\|HSET" > key_growth.log
优点:对线上服务无性能影响7。
缺点:需手动生成快照,RDB 文件较大时解析耗时较长
通过以上步骤,你可以在 Mac 上高效安装并使用 redis-rdb-tools
分析 Redis 数据增长问题。如需进一步优化排查逻辑,可结合 INFO keyspace
命令和业务日志综合分析。