MST

星途 面试题库

面试题:Redis中RDB持久化与AOF持久化在数据恢复场景下有何不同?

请阐述在Redis进行数据恢复时,RDB持久化方式和AOF持久化方式在恢复速度、数据完整性方面各自的特点及原因。
27.6万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

RDB持久化方式

  • 恢复速度
    • 特点:恢复速度相对较快。
    • 原因:RDB 持久化是将 Redis 在某一时刻的内存数据快照写入磁盘,恢复时直接加载这个快照文件到内存。加载过程相对简单,不需要像 AOF 那样重放大量的写操作日志,所以速度快。
  • 数据完整性
    • 特点:数据完整性不如 AOF 方式,可能会丢失部分数据。
    • 原因:RDB 持久化是按一定时间间隔进行快照的,比如设置每 5 分钟执行一次快照。如果在两次快照之间发生故障,那么从上次快照之后到故障发生时的数据就会丢失。

AOF持久化方式

  • 恢复速度
    • 特点:恢复速度相对较慢。
    • 原因:AOF 持久化是将 Redis 执行的写操作以日志形式追加到文件末尾,恢复时需要重放这些日志来重建数据。重放大量写操作日志需要花费更多时间,所以恢复速度比 RDB 慢。
  • 数据完整性
    • 特点:数据完整性更好,基本可以保证不丢失数据(取决于具体的刷盘策略)。
    • 原因:AOF 日志记录了每一个写操作,只要日志文件完整,通过重放日志就可以恢复到故障前的状态。如果采用 always 刷盘策略,即每次写操作都同步到磁盘,那么即使发生故障也不会丢失数据;如果采用 everysec 策略,最多可能丢失 1 秒的数据。