【Redis】 持久化详解:RDB、AOF、混合持久化与宕机数据恢复

【Redis】 持久化详解:RDB、AOF、混合持久化与宕机数据恢复 大家好我是程序员二叉。简介Redis基于内存运行宕机后内存数据全部丢失持久化是保障数据落地磁盘的核心机制。本文全面梳理RDB快照、AOF日志、AOF重写、混合持久化底层原理、优缺点与适用场景附带宕机完整恢复流程覆盖面试高频考点与线上落地规范。欢迎点赞收藏关注。一、RDB持久化1. 定义RDB是Redis默认持久化方案某一时间点全量内存二进制快照落地为rdb文件。2. 原理主线程fork子进程依托COW写时复制子进程遍历全量内存生成二进制快照新文件生成后替换旧RDB子进程操作不阻塞主线程。3. 触发方式手动save(阻塞主线程)、bgsave(后台异步)自动save配置规则、shutdown关机、flushall、主从全量同步4. 优点二进制压缩存储文件体积小故障恢复速度极快子进程异步落地主线程性能损耗低适合冷备份、跨机器容灾备份5. 缺点两次快照间隔宕机中间新增数据全部丢失fork子进程瞬间占用双倍物理内存大内存实例易卡顿二、AOF持久化1. 定义以追加日志形式记录所有客户端写指令重启通过重放指令恢复数据。2. 三种刷盘策略always每条写命令立刻刷磁盘零丢数据性能最差everysec每秒统一刷盘默认配置最多丢失1s数据均衡性能与安全no交给操作系统自主刷盘性能最优丢失数据不可控3. AOF重写原理fork子进程直接读取当前内存数据合并冗余指令生成最简新AOF重写期间新增写命令存入aof重写缓冲区重写结束后追加至新文件原子替换旧AOF。4. 重写目的消除冗余指令(多次修改同一个key、del无效数据)缩减文件体积减少重启重放指令数量加快数据恢复速度三、RDB与AOF对比对比项RDBAOF存储格式二进制快照文本指令日志数据丢失间隔内全丢everysec仅丢1秒文件大小小偏大恢复效率极快偏慢适用场景周期性冷备份线上实时数据持久化四、混合持久化(Redis4.0)原理开启aof-use-rdb-preambleAOF文件头部为RDB全量快照尾部是增量AOF日志。优势兼具RDB恢复快、AOF数据安全的优点生产环境主流配置。五、Redis宕机数据恢复流程Redis启动优先检查AOF文件是否开启开启AOF混合持久化先加载头部RDB快照再顺序重放尾部增量AOF日志纯AOF从头到尾重放全部写命令未开启AOF直接加载本地最新RDB文件恢复数据数据加载完毕启动成功对外提供服务总结RDB全量快照适合定期备份存在丢数风险AOF日志追加数据安全性高everysec是最优刷盘配置依靠重写压缩日志混合持久化融合两者优点线上推荐开启重启恢复优先级混合AOF 纯AOF RDB。