2026-10-24 00:24:27
Redis 的持久化
Redis 是内存数据库,为了保障数据的安全性,Redis 提供了两种持久化策略:RDB(Redis DataBase)和 AOF(Append Only File)。
一、RDB 策略
RDB 是 Redis 默认的持久化方案。在指定时间间隔内,Redis 服务已执行了指定次数的写操作后,就会自动触发一次持久化操作,将内存中的数据快照保存到磁盘上。这个快照文件是一个二进制文件,包含了 Redis 在某个时间点上的所有数据,通常命名为 dump.rdb。
RDB 原理:
Redis 会复制一个与当前进程一样的子进程,新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致。
主进程在持久化过程中不进行任何 IO 操作,确保了极高的性能。
RDB 保存的文件:
RDB 保存的文件是 dump.rdb,位置保存在 Redis 的启动目录。每次同步数据到磁盘都会生成一个新的 dump.rdb 文件,覆盖旧的 dump.rdb 文件。
配置 RDB 持久化策略:
在 redis.conf 的快照配置中,可以配置 RDB 保存的策略,如 save 900 1 表示 900 秒内至少有 1 个键被改变时触发快照。
RDB 数据恢复:
通过将 dump.rdb 文件备份并在 Redis 启动前替换到相应目录,Redis 启动时会加载 dump.rdb 文件,恢复数据。
RDB 小结:
优点:数据恢复速度快,适合大规模的数据恢复。
缺点:如果系统崩溃,最后一次快照之后的数据会丢失。
二、AOF 策略
AOF 策略是为了弥补 RDB 的不足(数据的不一致性)而出现的,它采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
AOF 原理:
Redis 以日志的形式记录每个写操作,只许追加文件但不可以改写文件。
Redis 启动时会读取 AOF 文件,重新构建数据。
AOF 保存的文件:
AOF 保存的文件是 appendonly.aof,位置也保存在 Redis 的启动目录。
配置 AOF 持久化策略:
在 redis.conf 的 APPEND ONLY MODE 配置模块中,可以配置 AOF 保存策略,如 appendfsync everysec 表示每秒异步记录一次。
AOF 数据恢复:
通过将 appendonly.aof 文件备份并在 Redis 启动前替换到相应目录,Redis 启动时会根据日志文件的内容恢复数据。
如果 AOF 文件格式异常,可以使用 redis-check-aof --fix appendonly.aof 命令进行修复。
AOF 的重写:
AOF 采用文件追加方式,文件会越来越大。为避免这种情况,Redis 提供了重写机制,当 AOF 文件的大小超过所设定的阈值时,会启动 AOF 文件的内容压缩,只保留可以恢复数据的最小指令集。
AOF 小结:
优点:数据可靠性高,因为每个写操作都被记录下来了。
缺点:日志文件比快照文件更大,恢复数据的速度比较慢。
三、应该选用 RDB 策略还是 AOF 策略?
四、Redis 持久化的配置
RDB 策略的配置:
AOF 策略的配置:
通过合理配置 RDB 和 AOF 策略,可以确保 Redis 数据的安全性和可靠性。