Redis 提供了两种主要的持久化方式:RDB(Redis DataBase)和 AOF(Append Only File)。以下是这两种方式的详细介绍:
RDB 是 Redis 默认的持久化方式。它会在指定的时间间隔内生成数据集的时间点快照(snapshot)。
在 redis.conf 文件中,可以通过以下配置来设置 RDB 持久化:
# 设置 RDB 文件保存的时间间隔
save 900 1
save 300 10
save 60 10000
# 设置 RDB 文件的保存路径
dbfilename dump.rdb
# 设置 RDB 文件的最大大小
maxmemory-policy volatile-lru
你也可以通过 Redis 命令手动触发 RDB 持久化:
SAVE
BGSAVE
SAVE 命令会阻塞 Redis 服务器,直到 RDB 文件保存完成。BGSAVE 命令会在后台执行 RDB 持久化,不会阻塞 Redis 服务器。
AOF 持久化会记录服务器接收到的所有写操作命令,并在服务器启动时,通过重新执行这些命令来重建数据集。
在 redis.conf 文件中,可以通过以下配置来启用 AOF 持久化:
# 启用 AOF 持久化
appendonly yes
# 设置 AOF 文件的保存路径
appendfilename "appendonly.aof"
# 设置 AOF 文件的同步策略
appendfsync everysec
appendfsync 的可选值有:
always:每次写操作都同步到磁盘,性能最差,但数据最安全。everysec:每秒同步一次,性能和安全性之间取得平衡。no:不同步,性能最好,但数据安全性最低。你也可以通过 Redis 命令手动触发 AOF 持久化:
BGREWRITEAOF
BGREWRITEAOF 命令会在后台重写 AOF 文件,以减少文件大小和提高性能。
为了提高数据的安全性和持久性,可以同时启用 RDB 和 AOF 持久化。在这种情况下,Redis 会优先使用 AOF 文件进行数据恢复,因为 AOF 文件记录了更多的写操作命令。
在 redis.conf 文件中,可以通过以下配置来启用混合使用 RDB 和 AOF:
# 启用 AOF 持久化
appendonly yes
# 设置 AOF 文件的保存路径
appendfilename "appendonly.aof"
# 设置 AOF 文件的同步策略
appendfsync everysec
# 设置 RDB 文件的保存路径
dbfilename dump.rdb
# 设置 RDB 文件的最大大小
maxmemory-policy volatile-lru
通过以上配置,Redis 会在指定的时间间隔内生成 RDB 文件,并在每次写操作后异步地将写操作命令追加到 AOF 文件中。在服务器启动时,Redis 会优先使用 AOF 文件进行数据恢复。
根据实际需求,可以选择合适的持久化方式或混合使用 RDB 和 AOF 来提高数据的安全性和持久性。