Skip to main content

Redis持久化

官方文档Redis persistence | Redis

持久性是指将数据写入持久存储,例如固态磁盘 (SSD)。Redis 提供了一系列持久性选项。其中包括:

  • RDB(Redis 数据库):RDB 持久性按指定的时间间隔执行数据集的时间点快照。
  • AOF(仅追加文件):AOF 持久性记录服务器收到的每个写入操作。然后可以在服务器启动时再次重播这些操作,重建原始数据集。命令的记录格式与 Redis 协议本身相同。
  • 持久性:可以完全禁用持久性。这有时在缓存时使用。
  • RDB + AOF:您还可以在同一实例中组合 AOF 和 RDB。

如果您不想考虑这些不同持久性策略之间的权衡,则可能需要考虑 Redis Enterprise 的持久性选项,这些选项可以使用 UI 进行预配置。

AOF

RDB

在Redis中,AOF和RDB两种持久化机制并不是互斥的,可以同时启用。

当两种机制同时启用时,Redis会按照以下流程进行数据持久化:

  1. Redis将所有写入操作追加到AOF日志文件中。

  2. Redis周期性地将AOF文件中的写入操作保存到RDB文件中,以便在发生故障时快速恢复。

  3. 当Redis启动时,它会优先通过RDB文件进行数据恢复。如果RDB文件不存在,则Redis会尝试通过AOF文件进行恢复。

  4. Redis重启时,它会首先使用AOF日志文件中的数据进行恢复,并将AOF文件导入内存。在此之后,Redis还将使用RDB文件进行恢复,以确保数据的最新性。

在这个过程中,AOF文件记录了相当数量的写入操作,而RDB文件则是快照形式保存的一份Redis内存快照。在正常运行期间,Redis会将所有写入操作追加到AOF文件中,并在指定的时间间隔内将快照保存到RDB文件中,以确保数据的持久化。

需要注意的是,Redis的持久化机制并不完全保证数据的永久保存,因为在某些情况下(比如硬件故障、人为错误等)都有可能导致数据丢失。所以在实际应用中,还需要根据业务需求选择适合的备份和恢复方案,以确保数据的安全性和可靠性。