Redis 持久化:两种核心方式(面试必背,超清晰)
Redis 是内存数据库 ,断电数据会丢,所以必须用持久化把数据存到磁盘。
一、Redis 有两种持久化方式
- RDB(快照)
- AOF(日志)
二、RDB 持久化(快照)
是什么
定时把内存里的所有数据 ,生成一个二进制快照文件(dump.rdb)保存到磁盘。
原理
- 满足配置条件(如 1分钟改了1万次),自动触发
- fork 子进程 异步写磁盘,不阻塞主进程
- 恢复时:直接加载整个快照
优点
- 文件小,恢复速度极快
- 对性能影响小
- 适合冷备、灾难恢复
缺点
- 会丢数据(最后一次快照到宕机之间的数据全丢)
- 数据量大时,fork 子进程会卡顿
三、AOF 持久化(日志)
是什么
把每一条写命令(set、del等),追加写入日志文件(appendonly.aof)。
原理
- 记录操作日志,不是记录数据
- 恢复时:重新执行一遍所有命令
- 会定期重写日志,避免文件太大
优点
- 数据安全性高,最多丢1秒数据
- 日志可读,可修复
- 适合实时数据不丢的场景
缺点
- 文件比 RDB 大很多
- 恢复速度比 RDB 慢
- 对性能有一点点影响
四、对比表(面试直接背)
| 特性 | RDB | AOF |
|---|---|---|
| 实现方式 | 定时全量快照 | 记录写命令 |
| 恢复速度 | 极快 | 慢 |
| 数据安全性 | 可能丢数据 | 极高(最多丢1s) |
| 文件大小 | 小 | 大 |
| 性能影响 | 小 | 稍大 |
| 适合场景 | 备份、容灾 | 实时数据安全 |
五、企业最佳实践
RDB + AOF 同时开启
- 用 AOF 保证数据不丢
- 用 RDB 做冷备份、快速恢复
六、面试标准答案(30秒)
Redis 持久化有两种:
- RDB:定时生成内存快照,恢复快,但可能丢数据;
- AOF :记录每条写命令,数据安全,恢复慢。
生产环境一般同时开启,用 AOF 保证数据安全,RDB 用于备份。
总结
- RDB = 快照,快,可能丢数据
- AOF = 日志,安全,恢复慢
- 企业:两个都开