一架梯子,一头程序猿,仰望星空!
Redis面试题 > 内容正文

Redis持久化方式有几种?


问题简答

Redis 支持RDB和AOF两种持久化方式:
1、RDB(Redis DataBase):RDB 是一种快照(snapshotting)持久化方式,它会在指定的时间间隔内生成一个 Redis 数据库的快照文件,保存在硬盘上。
2、AOF(Append Only File):AOF 是一种基于日志的持久化方式,它会记录每一条写命令(append-only)到一个追加文件中,可以保证完整地还原 Redis 的操作过程。

问题详解:

1.RDB和AOF优缺点对比

1.1.RDB 持久化

1.1.1.优点

  • RDB 持久化方式对 Redis 读写性能影响较小,因为它是在指定的时间间隔内进行一次快照,而不是在每次写操作后都进行持久化操作。
  • RDB 文件是一个二进制文件,保存了 Redis 的内部状态,可以实现非常快速地恢复数据集合,适合用于备份和灾难恢复。

1.1.2.缺点

  • RDB 持久化方式存在数据丢失的风险,因为它是按照指定的时间间隔进行一次快照,如果 Redis 在持久化之前崩溃了,那么在最后一次快照之后的数据都会丢失。
  • RDB 文件会占用较大的磁盘空间,因为它包含了完整的数据集合,而且在持久化之前 Redis 会将数据集合写入一个临时文件,所以在写操作频繁的场景下,可能会占用大量的磁盘空间。

1.2.AOF 持久化

1.2.1.优点

  • AOF 持久化方式可以保证数据不丢失,因为每个写操作都会被记录到 AOF 文件中,Redis 重新启动时会根据 AOF 文件中的命令重新构建数据集合。
  • AOF 持久化方式更加可靠,因为它是基于日志的,所以即使在 Redis 未正确关闭的情况下,也可以通过 AOF 文件进行数据恢复。

1.2.2.缺点

  • AOF 持久化方式对 Redis 的写性能影响较大,因为每个写操作都需要追加到 AOF 文件的末尾,如果写入的数据
  • AOF占用磁盘空间,比RDB大,因为每次REDIS写入操作都会被记录下来。
  • AOF恢复Redis的速度比RDB慢,AOF 恢复需要逐行读取和执行 AOF 文件中的写命令,RDB只要加载一次快照文件。