2025年Java面试宝典网盘下载地址(提取码:9b3g)
Redis持久化机制RDB和AOF区别
Redis作为主流的缓存数据库,持久化机制是面试必问的技术点。今天咱们用大白话拆解RDB和AOF的区别,帮你搞定面试!

RDB的工作原理
RDB(Redis DataBase)是Redis默认的持久化方式,通过生成数据快照实现持久化。触发RDB的条件有两种:
- 手动触发:执行
SAVE或BGSAVE命令。 - 自动触发:配置
save m n规则(例如save 900 1表示900秒内有1次写操作就触发)。
RDB生成的是二进制压缩文件,恢复数据时直接加载到内存,速度快。但缺点是可能丢失最后一次快照后的数据(例如每5分钟备份一次,崩溃时会丢失最近5分钟的数据)。

AOF的工作原理
AOF(Append Only File)通过记录写命令实现持久化。开启AOF后,Redis会将每个写操作追加到文件末尾。AOF有三种同步策略:
- always:每次写操作都同步到磁盘,数据最安全,但性能差。
- everysec:每秒同步一次(默认),兼顾性能和数据安全。
- no:由操作系统决定同步时机,性能最好,但可能丢失大量数据。
AOF文件会不断增大,Redis提供了BGREWRITEAOF命令重写AOF文件,去除冗余命令。恢复数据时需重新执行所有命令,速度比RDB慢。
RDB和AOF的核心区别
| 对比维度 | RDB | AOF |
|--------------|-----------------------------|-----------------------------|
| 持久化方式 | 快照 | 日志追加 |
| 数据完整性 | 可能丢失部分数据 | 数据更完整(取决于同步策略)|
| 恢复速度 | 快(直接加载二进制文件) | 慢(需重放命令) |
| 文件大小 | 小(二进制压缩) | 大(文本格式) |
| 适用场景 | 允许数据丢失,追求快速恢复 | 对数据安全性要求高 |

生产环境如何选择?
- 混合模式:Redis 4.0支持RDB+AOF混合持久化。AOF文件包含RDB格式的全量数据和增量AOF日志,兼顾安全性和恢复速度。
- 容灾备份:RDB适合做冷备,定期归档;AOF适合实时持久化。
- 性能优先:如果对数据丢失不敏感(例如缓存场景),选RDB;对数据安全要求高(例如金融场景),用AOF。
高频面试问题
-
RDB快照期间有新写入的数据怎么办?
Redis通过写时复制(Copy-On-Write)解决:主进程继续处理请求,子进程持久化原有数据。新写入的数据会单独存储。 -
AOF重写会阻塞服务吗?
重写由子进程完成,主进程继续响应请求。但重写期间的新命令会同时写入AOF缓冲区和重写缓冲区,结束时合并到新AOF文件。 -
服务器宕机后如何恢复数据?
优先用AOF恢复(数据更完整),如果AOF损坏则用RDB。
如果需要购买面试鸭会员,可以通过面试鸭返利网找到我,返利25元!
参考资料:


