首页/数据/Redis 进阶速查/rdbchecksum:快照完整性校验
持久化56 条

rdbchecksum:快照完整性校验

rdbchecksum 默认开启,在 RDB 文件尾部写入 CRC64 校验和;加载时校验不通过会拒绝启动,避免悄悄载入损坏数据。

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

校验和是怎么用的

rdbchecksum 默认开启:快照写完后在文件尾部追加一个 CRC64 校验和,加载时先做完整性校验,不通过就直接拒绝启动。这样做的价值是把「文件在硬盘或传输过程中损坏」变成一次明确的启动失败,而不是悄悄载入一批错数据。代价是生成与加载各多出一点 CPU 开销,官方文档描述为对性能影响很小。

基本信息

配置项rdbchecksum yes(默认开启)
校验方式CRC64 校验和写入文件尾部
生效时机生成快照时写入,加载时校验
工具redis-check-rdb 可离线校验已有文件
历史情况早期版本生成的快照可能不带校验和

典型使用场景

  • 备份归档后逐个文件做离线校验,确认没有被截断或损坏
  • 恢复演练时先校验再加载,避免把坏文件带进恢复流程
  • 怀疑磁盘或传输链路有问题时用它区分「文件坏」还是「数据错」
  • 跨环境拷贝快照后核对完整性,尤其是经过压缩与解压的场景
  • 排查启动直接退出的原因,确认是否为校验失败

查看与校验

查看与校验
redis-cli CONFIG GET rdbchecksum             # 查看当前取值
redis-cli CONFIG SET rdbchecksum yes         # 保持开启,不建议关闭
redis-check-rdb /data/redis/dump.rdb         # 离线校验并输出摘要
echo $?                                      # 返回码非 0 说明文件有问题

校验结果怎么读

输出信息含义应对
版本与键数量行文件可解析,给出格式版本与键总数与备份记录核对数量是否一致
校验通过提示尾部校验和与内容匹配可以进入加载或恢复流程
校验失败或截断提示文件不完整或已损坏换一份备份,同时排查磁盘与传输
缺少校验和老快照或写入过程被中断谨慎使用,优先换更新的备份
校验只能证明文件完整,不能证明内容正确:快照期间由业务逻辑写错的脏数据同样能通过校验,别把它当成数据正确性的证明。
关闭校验能省一点开销,但损坏文件可能直接被加载出脏数据,收益与风险不对等,生产环境保持默认开启。

易错点

  • 为了省一点 CPU 关闭校验,损坏文件被静默加载,问题被推迟到业务侧才暴露
  • 只校验最新的快照,历史的备份从未验证,真正需要回滚时才发现不可用
  • 把校验和通过当作数据正确,忽略业务层面对账,脏数据照样进入生产
  • 在写入进行中校验文件,拿到误导性结果,应选在无写入或低峰时执行

数据来源与参考

  • Redis 官方文档:redis.conf rdbchecksum 说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌