Redis 数据备份与恢复是 Redis 数据持久化的重要部分,它保证了即使 Redis 服务器重启或者发生故障,数据也能得到恢复。Redis 提供了两种主要的数据持久化机制:RDB(Redis Database)和 AOF(Append-only File)。
RDB(Redis Database)
备份(Snapshotting):
-
手动备份:通过 Redis 命令行工具或客户端执行
SAVE
命令,Redis 将当前内存中的所有数据生成一个 RDB 文件(通常是dump.rdb
),这是一个二进制格式的文件,包含了 Redis 数据库的所有键值对数据。SAVE
-
自动备份:通过在 Redis 配置文件(redis.conf)中设置
save
参数,可以配置满足特定条件时自动触发快照备份,例如每分钟修改超过1000个键时才进行备份。# 示例配置 save 900 1 # 900秒内至少有一个键改变则保存 save 300 10 # 300秒内至少有10个键改变则保存 save 60 10000 # 60秒内至少有10000个键改变则保存
恢复:
- 当 Redis 重启时,它会自动查找并且加载
dir
配置指定目录下的dbfilename
(默认为dump.rdb
)文件,以此来恢复数据。
AOF(Append-only File)
备份:
-
AOF 持久化记录所有修改数据库的命令,这些命令按顺序追加到一个单独的日志文件(默认为
appendonly.aof
)中。 -
开启 AOF 持久化,需在配置文件中设置
appendonly yes
。 -
AOF 文件的重写机制可以在文件过大时自动优化,减少文件体积。
恢复:
-
同样在 Redis 重启时,若发现 AOF 文件存在且
appendonly
配置项为yes
,Redis 将优先使用 AOF 文件恢复数据,逐条执行 AOF 文件中的命令。 -
若要切换回 RDB 恢复,需要在配置文件中关闭 AOF 并确保 AOF 文件不存在,否则 Redis 将始终尝试加载 AOF 文件。
混合使用:
在实际应用中,有时会选择同时开启 RDB 和 AOF 两种持久化方式,以获得更好的数据安全性和性能平衡。在这种情况下,Redis 在启动时将会优先使用 AOF 文件恢复数据,因为它能提供更高的数据完整性。然而,这也会增加 Redis 重启时的数据恢复时间。
此外,对于大型 AOF 文件,Redis 提供了 bgrewriteaof
命令,用于在后台对 AOF 文件进行重写,缩小文件大小并优化写入性能。同时,Redis 还提供了 redis-check-aof
工具用于校验和修复 AOF 文件可能出现的问题。