Redis 持久化面试题大全
Redis 持久化(Persistence)是面试中非常常考的一个知识点,尤其是大厂或者对分布式系统要求较高的岗位。下面我整理了一些高频 Redis 持久化相关面试题,从基础到进阶都涵盖到了,并附上答题思路
✅ Redis 持久化面试题大全(含答案要点)
1. Redis 有哪几种持久化方式?它们的区别是什么?
答题要点:
-
RDB(快照):
-
周期性保存数据到磁盘(.rdb 文件)
-
快,压缩率高,占用资源少
-
但可能丢失最近一次快照后的数据(非实时)
-
-
AOF(追加日志):
-
每次写操作记录一条日志(append-only file)
-
更安全,数据几乎不丢
-
文件越来越大,需要重写(rewrite)
-
-
混合持久化(RDB+AOF)(Redis 4.0+):
-
优化恢复速度和安全性,结合两者优点
-
2. RDB 持久化的触发方式有哪些?
答题要点:
-
手动触发:
-
SAVE:阻塞主线程,保存快照
-
BGSAVE:开启子进程保存,不阻塞主线程
-
-
自动触发(配置文件):
-
如 save 900 1 表示 900 秒内至少 1 个 key 变更,就触发 RDB
-
-
关闭 Redis 时自动触发
3. AOF 持久化的刷盘策略有哪几种?区别是什么?
答题要点:
appendfsync always # 每次写操作都 fsync(最安全,性能差)
appendfsync everysec # 每秒 fsync(默认,平衡安全和性能)
appendfsync no # 由操作系统控制(性能最好,最不安全)
4. Redis 崩溃后如何恢复数据?优先加载哪种持久化文件?
答题要点:
-
默认优先加载 AOF 文件(因为数据更新更实时)
-
如果没有 AOF 文件,才加载 RDB 文件
-
配置文件中可通过 appendonly 控制是否启用 AOF
5. RDB 和 AOF 各自的优缺点?是否可以同时开启?
答题要点:
|
类型 |
优点 |
缺点 |
|---|---|---|
|
RDB |
启动快、文件小、性能好 |
有可能丢失最近变更的数据 |
|
AOF |
更安全,几乎不丢数据 |
写操作多、文件大、恢复慢 |
✅ Redis 支持 同时开启 RDB 和 AOF,推荐在生产环境使用
6. 如何防止 AOF 文件过大?
答题要点:
-
Redis 会自动触发 AOF 重写(bgrewriteaof)
-
合并多条命令成一条,更节省空间
-
可手动执行:bgrewriteaof
7. Redis 发生故障后,AOF 文件损坏怎么办?
答题要点:
-
Redis 提供修复工具:
redis-check-aof --fix appendonly.aof
-
-
Redis 启动失败时日志中会提示修复建议
-
修复可能会导致最后几条写入命令丢失
8. Redis 持久化相关参数有哪些?
答题要点:
-
appendonly:是否开启 AOF
-
appendfsync:AOF 刷盘策略
-
auto-aof-rewrite-percentage、auto-aof-rewrite-min-size:控制 AOF 重写
-
save:控制 RDB 的保存策略
9. Redis 支持事务吗?事务和持久化有关联吗?
答题要点:
-
Redis 支持基本事务(MULTI/EXEC)
-
事务执行的写操作仍然会被记录到 AOF
-
AOF 的持久化写入可以保证事务级数据不丢失(取决于刷盘策略)
10. 在极端情况下,RDB 和 AOF 都可能丢数据吗?你会如何防护?
答题要点:
-
是的,比如:
-
写了数据,但还没写入 AOF,Redis 崩溃
-
或者还没触发 RDB 快照
-
-
解决方法:
-
设置 appendfsync always(最安全,但性能低)
-
使用 Redis Sentinel 或 Cluster 提高可靠性
-
日志定期 off-site 备份
-
如果你想,我可以再把上面这些题目生成一份 Markdown 或 PDF 版「Redis 持久化面试宝典」,方便你背题或打印出来练口语,要不要?📄😎
浙公网安备 33010602011771号