新项目使用了 Reids 的过期监听来执行延时任务,在不搭建 redis 高可用集群的情况下,还是想尽量保证 Redis 数据不丢失,于是就打算把 Redis 的持久化配置上,研究了下相关资料,这里做下记录:

在配置 Redis 的持久化时,通常会选择 RDB(Redis Database)快照和 AOF(Append Only File)日志的组合,以兼顾性能和数据持久性。以下是一个合理的混合持久化配置示例:

1. RDB 配置

RDB 是 Redis 的快照持久化机制,它会在特定时间间隔内保存数据快照到磁盘。RDB 配置如下:

# RDB 持久化间隔配置(在满足条件时生成快照)
save 900 1  # 900 秒(15 分钟)内至少有 1 个键被修改
save 300 10 # 300 秒(5 分钟)内至少有 10 个键被修改
save 60 10000 # 60 秒内至少有 10000 个键被修改

# RDB 文件名称(可选)
dbfilename dump.rdb

# RDB 文件保存路径(可选)
dir /var/lib/redis

2. AOF 配置

AOF 是 Redis 的追加日志持久化机制,它会记录每个写操作,以便在重启时重放这些操作。AOF 配置如下:

# 启用 AOF 持久化
appendonly yes

# AOF 文件名称
appendfilename "appendonly.aof"

# AOF 写入策略
appendfsync everysec # 每秒同步一次

# AOF 重写配置
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

3. 混合持久化策略

结合 RDB 和 AOF 的优点,可以配置如下:

# 混合持久化策略
aof-use-rdb-preamble yes

启用 aof-use-rdb-preamble 选项后,AOF 文件在重写时会包含一个 RDB 预备文件,这样可以加快重启速度,并减少 AOF 文件的大小。

4. 完整配置示例

# RDB 配置
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /var/lib/redis

# AOF 配置
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 混合持久化策略
aof-use-rdb-preamble yes
最后修改:2024 年 07 月 08 日
請我飲咖啡