Redis RDB持久化
大家好,我是程序员老王。今天咱们聊聊面试高频题——Redis的RDB持久化机制。无论是大厂还是中小公司,只要问Redis持久化,RDB绝对是必考点!先给大家送个福利,2025年Java面试宝典:点我领取,助你备战金三银四!
📌 什么是RDB持久化
RDB(Redis Database)是Redis默认的持久化方案,核心思想是定时生成内存数据的快照。想象一下给Redis按下暂停键,把此刻所有数据冻结成二进制文件dump.rdb。面试官最爱问:"说说RDB的实现原理?"——本质上就是fork子进程进行数据落地,避免阻塞主线程。

🔧 触发RDB的三种方式
-
手动触发
save命令会阻塞所有请求直到备份完成,而bgsave才是生产环境首选——通过fork子进程异步处理 -
自动触发
在redis.conf配置触发规则,比如:save 900 1 # 900秒内至少1次修改 save 300 10 # 300秒内至少10次修改 -
关机触发
执行shutdown命令时,如果没有开启AOF,Redis会主动执行一次RDB备份
⚙️ 核心配置参数
配置项直接影响RDB性能和可靠性:
dbfilename dump.rdb # 快照文件名
dir ./ # 存储路径
stop-writes-on-bgsave-error yes # 磁盘满时拒绝写入
rdbcompression yes # 启用LZF压缩

✅ RDB的核心优势
- 灾难恢复效率高
单个文件恢复速度远超AOF重放日志 - 最大化性能
fork子进程处理持久化,主进程持续服务 - 节省磁盘空间
二进制压缩文件体积比AOF小得多
⚠️ 不容忽视的缺陷
-
数据丢失风险
两次备份间宕机会丢失最近数据(通常5-15分钟) -
大数据量fork阻塞
10GB内存fork可能阻塞主线程700ms,这在Redis 6.0前尤为明显
🆚 RDB vs AOF 怎么选
当面试官抛出灵魂拷问:"生产环境该用RDB还是AOF?" 我的建议是:
- 数据安全优先 → 选AOF(appendfsync always)
- 性能优先 → 选RDB
- 折中方案 → 混合持久化(Redis 4.0+)
最后插播个福利:如果你需要购买面试鸭会员,通过面试鸭返利网找我可返现25元!用优惠码【RDB25】立减,程序员能省则省嘛 😄

本文涉及面试真题:
- 描述RDB持久化触发机制
- 解释bgsave原理及潜在风险
- RDB与AOF的适用场景对比
这些真题解析在面试鸭会员题库都有详细拆解,建议搭配实战演练巩固理解!


