首页/数据/Redis 进阶速查/rdbcompression 与快照体积
持久化56 条

rdbcompression 与快照体积

rdbcompression 控制快照字符串是否使用 LZF 压缩:默认开启,牺牲少量 CPU 换取明显更小的文件与更快的传输。

Redis 进阶速查数据更新于 2026-10-13

快照压缩开关是什么

rdbcompression 决定 RDB 快照里的字符串是否使用 LZF 算法压缩,默认开启。LZF 是无损、以速度优先的轻量压缩,解压极快,基本不影响加载耗时,代价是生成快照时多消耗一点 CPU。它对文本类数据收益明显,对图片、已压缩包这类二进制内容几乎无效,因为高频字节分布已经被打散。这个开关只影响新生成的快照,不改变已有文件。

基本信息

配置项rdbcompression yes(默认开启)
压缩算法LZF,无损、速度优先
生效时机下一次 BGSAVE 或 SAVE 写盘时
运行时修改CONFIG SET rdbcompression no 可即时生效
影响范围快照文件体积与写盘带宽,不影响内存占用

典型使用场景

  • 磁盘吃紧想缩小快照占用,先用压缩换取体积下降
  • 跨机房或跨云传输备份文件,减小传输字节数与耗时
  • 希望缩短快照写盘窗口,让 fork 之后主进程更快恢复
  • 归档历史备份时降低对象存储的容量与费用成本
  • CPU 极度紧张且磁盘带宽富余的实例,评估关闭压缩来省 CPU

查看与调整

查看与调整
redis-cli CONFIG GET rdbcompression          # 查看当前取值
redis-cli CONFIG SET rdbcompression yes      # 运行时开启,下次快照生效
redis-cli BGSAVE                             # 生成一份新快照
ls -lh /data/redis/dump.rdb                  # 对比调整前后的文件体积
redis-cli CONFIG REWRITE                     # 把运行时改动写回配置文件

压不压怎么权衡

数据特征压缩收益建议
文本类键值收益高,常见可缩小数倍保持开启
已压缩二进制收益很低,字节分布已打散开不开差别不大
大规模计数器中等,取决于键名重复度保持开启
CPU 已接近饱和收益有限,额外消耗可观实测后再决定
压缩只影响快照文件的体积与写盘带宽。恢复时整份数据仍要全量读进内存,恢复时长主要由数据量与内存带宽决定,和压缩率关系不大。
关闭压缩对内存占用没有任何改善:数据集在内存里始终是解压后的形态,别把它当作省内存的手段。

易错点

  • 误以为关闭压缩能省内存:它只改变磁盘文件大小与写盘字节数,内存占用完全不变
  • 压缩写盘与 fork 的 CPU 峰值叠加,在 CPU 紧张的实例上表现为写入延迟尖峰
  • 只改运行时配置没执行 CONFIG REWRITE,重启后回到默认值,前后表现不一致
  • 只看文件体积对比就下结论,没有按数据特征分类,容易在二进制占比高的实例上误判收益

数据来源与参考

  • Redis 官方文档:redis.conf rdbcompression 注释
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌