Redis持久化
持久性是指将数据写入持久存储,例如固态磁盘 (SSD)。Redis 提供了一系列持久性选项。其中包括:
- RDB(Redis 数据库):RDB 持久性按指定的时间间隔执行数据集的时间点快照。
- AOF(仅追加文件):AOF 持久性记录服务器收到的每个写入操作。然后可以在服务器启动时再次重播这些操作,重建原始数据集。命令的记录格式与 Redis 协议本身相同。
- 无持久性:可以完全禁用持久性。这有时在缓存时使用。
- RDB + AOF:您还可以在同一实例中组合 AOF 和 RDB。
如果您不想考虑这些不同持久性策略之间的权衡,则可能需要考虑 Redis Enterprise 的持久性选项,这些选项可以使用 UI 进行预配置。
AOF
RDB
在Redis中,AOF和RDB两种持久化机制并不是互斥的,可以同时启用。
当两种机制同时启用时,Redis会按照以下流程进行数据持久化:
Redis将所有写入操作追加到AOF日志文件中。
Redis周期性地将AOF文件中的写入操作保存到RDB文件中,以便在发生故障时快速恢复。
当Redis启动时,它会优先通过RDB文件进行数据恢复。如果RDB文件不存在,则Redis会尝试通过AOF文件进行恢复。
Redis重启时,它会首先使用AOF日志文件中的数据进行恢复,并将AOF文件导入内存。在此之后,Redis还将使用RDB文件进行恢复,以确保数据的最新性。
在这个过程中,AOF文件记录了相当数量的写入操作,而RDB文件则是快照形式保存的一份Redis内存快照。在正常运行期间,Redis会将所有写入操作追加到AOF文件中,并在指定的时间间隔内将快照保存到RDB文件中,以确保数据的持久化。
需要注意的是,Redis的持久化机制并不完全保证数据的永久保存,因为在某些情况下(比如硬件故障、人为错误等)都有可能导致数据丢失。所以在实际应用中,还需要根据业务需求选择适合的备份和恢复方案,以确保数据的安全性和可靠性。