我就是奇迹

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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 持久化面试宝典」,方便你背题或打印出来练口语,要不要?📄😎

posted on 2025-04-21 12:06  我就是奇迹  阅读(157)  评论(0)    收藏  举报