https://chat.deepseek.com/share/fde8hr0ntim25od7w9
题目:RDB和AOF的写回策略分别是什么?
难度:low
评分:⭐⭐⭐⭐☆☆☆(2/5)
RDB 是一次性把整个的快照直接加载到内存中,一次性直接就完成了。而 AOF 本身存储的是大量的命令,它需要逐个去执行才能完成整个写回。所以在备份的时候,RDB 加载的会更快,AOF 在执行时间长了加载的会更慢。这个原因,Redis 后期推出了混合的策略。历史的数据使用 RDB,最新的数据使用 AOF,后续的逐步的进行替换,把 AOF 内容放到 RDB 中。RDB 来实现远期数据的存储,AOF 实行实时短期的几秒内数据的展现,这样可以更快的加载,也更全面的加载,保证系统的数据稳定性、系统数据安全。
优点:
RDB/AOF 加载速度差异抓到了- Redis 4.0 混合持久化提到
不足:
❌ 答非所问:题目问写回策略(fsync),答成了加载策略- ❌ 遗漏 fsync.always / fsync.everysec / no 三种策略- ❌ 遗漏 appendfsync 参数- ❌ 遗漏 RDB fork + COW 子进程机制- ❌ 遗漏 AOF rewrite (bgrewriteaof)
核心考点:考察对 Redis 持久化写回策略(fsync)的理解,区分"写回"和"加载"两个不同方向。
知识点拆解:
关键参数:
面试官您好,Redis 写回策略主要是 AOF 的 appendfsync 参数,分三档:always、everysec、no。
always 是每条命令立即 fsync 到磁盘,最安全但性能最低,QPS 降到几百,生产一般不用。
everysec 是默认值,每秒 fsync 一次,性能和安全性折中,最多丢 1 秒数据。生产环境推荐这个。
no 是让 OS 决定何时 fsync(通常 30 秒),性能最高但可能丢大量数据,一般不用。
RDB 是快照,fork 子进程 + COW 机制,触发时机是手动 SAVE/BGSAVE 或配置(save 60 10000 等)。RDB 写回后原子替换旧文件。
Redis 4.0 引入了混合持久化,AOF rewrite 时前半段用 RDB 格式存历史数据,后半段用 AOF 格式存增量,兼顾启动速度和数据安全性。
参数方面,appendfsync 控制 AOF 写回频率,auto-aof-rewrite-percentage 和 auto-aof-rewrite-min-size 控制 AOF rewrite 触发阈值。