AOF 持久化原理
面试官问:"Redis 的 AOF 是什么?"
小陈说:"AOF 是 Append Only File,把所有写命令记录下来。"
面试官追问:"AOF 有几种刷盘策略?哪种最安全?"
小陈说:"...always?"
面试官继续追问:"那 always 和 everysec 有什么区别?性能差多少?"
小陈开始答不上来。
AOF 是 Redis 持久化的另一核心机制。相比 RDB 的数据快照,AOF 是操作日志,能做到更高的数据安全性。这道题能说清楚三种刷盘策略和 AOFRW 重写机制的候选人,对 Redis 持久化有系统理解。
一、AOF 持久化概述 🔴
1.1 AOF vs RDB
1.2 AOF 写入流程
1.3 ❌ 错误示范
候选人原话:"AOF 每次写命令都刷盘,所以比 RDB 慢很多。"
问题诊断:AOF 有多种刷盘策略,always 每次都刷,everysec 每秒刷一次,no 由系统决定刷盘时机。只有 always 才每次都刷盘。
候选人原话 2:"AOF 比 RDB 好,所以应该只用 AOF。"
问题诊断:AOF 文件比 RDB 大,恢复比 RDB 慢。建议 RDB + AOF 混合使用,或者根据业务场景选择。
【面试官心理】 这道题我能从"为什么需要 AOF"切入。RDB 可能丢最后一次快照后的数据,AOF 通过记录操作日志解决这个问题。能说清楚这个本质区别的候选人,说明他理解了持久化的目的。
二、三种刷盘策略 🔴
2.1 刷盘策略对比
2.2 各策略详解
always:
- QPS 影响:10,000~50,000(取决于磁盘性能)
- SSD:影响较小
- HDD:影响巨大(随机写入)
everysec:
- QPS 影响:几乎无影响
- 数据安全性:最多丢失 1 秒数据
- 推荐配置
no:
- QPS 影响:无
- 数据安全性:取决于 OS,通常 30 秒内
三、AOFRW 重写机制 🟡
3.1 AOF 文件膨胀
3.2 重写原理
3.3 触发方式
四、混合持久化 🟡
4.1 混合持久化原理
4.2 配置与效果
五、生产避坑 🟡
5.1 性能调优
5.2 AOF vs RDB 选择
【面试官心理】 AOF 持久化是 Redis 面试中的高频题。能说清楚三种刷盘策略和混合持久化的候选人,说明他对 Redis 的数据安全性设计有深入理解。