Skip to content

面试速答(先看这里)

**一句话结论:**Redis提供了两种持久化的机制,分别是RDB和AOF。

60秒标准回答:

Redis提供了两种持久化的机制,分别是RDB和AOF

RDB是将Redis的内存中的数据 定期 保存到磁盘上,以防止数据在Redis进程异常退出或服务器断电等情况下丢失

RDB的优点是:快照文件小、恢复速度快,适合做备份和灾难恢复

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**RDB是将Redis的内存中的数据 定期 保存到磁盘上,以防止数据在Redis进程异常退出或服务器断电等情况下丢失。
  • **要点2:**RDB的优点是:快照文件小、恢复速度快,适合做备份和灾难恢复。
  • **要点3:**AOF的优点是:可以实现更高的数据可靠性、支持更细粒度的数据恢复,适合做数据存档和数据备份。
  • **要点4:**AOF和RDB各自有优缺点,为了让用户能够同时拥有上述两种持久化的优点, Redis 4.0 推出了 RDB-AOF 混合持久化。
  • **要点5:**混合持久化结合了 RDB 和 AOF 持久化的优点,开头为 RDB 的格式,使得 Redis 可以更快的启动,同时结合 AOF 的优点,又减低了大量数据丢失的风险。

**记忆锚点:**AOF → Redis → RDB → 混合持久化 → aof-use-rdb-preamble → 条件来选择合适的持久化

关键取舍:

  • RDB的优点是:快照文件小、恢复速度快,适合做备份和灾难恢复。
  • RDB的缺点是:定期更新可能会丢数据 AOF是将Redis的所有写操作 追加到AOF文件(Append Only File)的末尾, 从而记录了Redis服务器运行期间所有修改操作的详细记录。
  • AOF的优点是:可以实现更高的数据可靠性、支持更细粒度的数据恢复,适合做数据存档和数据备份。

易错提醒:

  • aof-use-rdb-preamble 是开启混合模式的参数 混合持久化结合了 RDB 和 AOF 持久化的优点,开头为 RDB 的格式,使得 Redis 可以更快的启动,同时结合 AOF 的优点,又减低了大量数据丢失的风险。
  • 如果开启混合持久化,那么此混合持久化 AOF 文件,是不能用在旧版本中的,不向下兼容的。

加分表达:

  • 当Redis重新启动时,可以通过执行AOF文件中保存的写操作来恢复数据。
  • 但是如果Redis刚刚执行完一个写命令,还没来得及写AOF文件就宕机了,那么这个命令和相应的数据就会丢失了。

追问准备:

  • 围绕「AOF」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「Redis」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「RDB」:底层原理是什么?使用时有哪些边界和常见坑?
  • 如果线上出现异常,你会如何定位、验证并规避?

典型回答 ​

Redis提供了两种持久化的机制,分别是RDB和AOF。

RDB ​

RDB是将Redis的内存中的数据定期保存到磁盘上,以防止数据在Redis进程异常退出或服务器断电等情况下丢失。

RDB的优点是:快照文件小、恢复速度快,适合做备份和灾难恢复。

RDB的缺点是:定期更新可能会丢数据

AOF ​

AOF是将Redis的所有写操作**追加到AOF文件(Append Only File)的末尾,**从而记录了Redis服务器运行期间所有修改操作的详细记录。当Redis重新启动时,可以通过执行AOF文件中保存的写操作来恢复数据。

但是如果Redis刚刚执行完一个写命令,还没来得及写AOF文件就宕机了,那么这个命令和相应的数据就会丢失了。但是他也比RDB要更加靠谱一些。

AOF的优点是:可以实现更高的数据可靠性、支持更细粒度的数据恢复,适合做数据存档和数据备份。

AOF的缺点是:文件大占用空间更多,每次写操作都需要写磁盘导致负载较高

比较 ​

RDB和AOF在数据可靠性、性能、存储空间占用等方面都有不同的优缺点,具体可以根据实际业务需求和硬件条件来选择合适的持久化机制,或者同时使用两种持久化机制来实现更高的数据可靠性。

特性RDBAOF
数据可靠性可能会丢失最后一次快照之后的数据保证最后一次写操作之前的数据不会丢失
性能读写性能较高,适合做数据恢复写性能较高,适合做数据存档
存储空间占用快照文件较小,占用空间较少AOF文件较大,占用空间较多
恢复时间从快照文件中恢复数据较快从AOF文件中恢复数据较慢

混合持久化 ​

AOF和RDB各自有优缺点,为了让用户能够同时拥有上述两种持久化的优点, Redis 4.0 推出了 RDB-AOF 混合持久化。

在开启混合持久化的情况下,AOF 重写时会把 Redis 的持久化数据,以 RDB 的格式写入到 AOF 文件的开头,之后的数据再以 AOF 的格式追加的文件的末尾。

aof-use-rdb-preamble是开启混合模式的参数

混合持久化结合了 RDB 和 AOF 持久化的优点,开头为 RDB 的格式,使得 Redis 可以更快的启动,同时结合 AOF 的优点,又减低了大量数据丢失的风险。

但是,在AOF 文件中添加了 RDB 格式的内容,使得 AOF 文件的可读性变得很差;如果开启混合持久化,那么此混合持久化 AOF 文件,是不能用在旧版本中的,不向下兼容的。

扩展知识 ​

Redis能完全保证数据不丢失吗? ​

📄 ✅Redis能完全保证数据不丢失吗?

打开文档:✅Redis能完全保证数据不丢失吗?

写回策略 ​

📄 ✅RDB和AOF的写回策略分别是什么?

打开文档:✅RDB和AOF的写回策略分别是什么?