快照压缩开关是什么
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 已接近饱和 | 收益有限,额外消耗可观 | 实测后再决定 |
压缩只影响快照文件的体积与写盘带宽。恢复时整份数据仍要全量读进内存,恢复时长主要由数据量与内存带宽决定,和压缩率关系不大。
关闭压缩对内存占用没有任何改善:数据集在内存里始终是解压后的形态,别把它当作省内存的手段。