Redis持久化策略
一、概述
Redis持久化是确保数据在内存数据库中持久保存的重要机制。
Redis 有两种持久化机制:RDB(快照)和 AOF(追加文件)。Redis4.0后支持两种持久化机制混合使用。
二、持久化实现方式
1. RDB(Redis DataBase)
- 概述:RDB 是 Redis 默认的持久化方式,通过生成数据快照的形式定期保存数据。
- 工作原理:
- 在指定的时间间隔内(如每隔几分钟),Redis 会自动创建当前数据集的快照,并将其存储为
.rdb
文件。 - 该文件通常存储在指定的持久化目录中。
- 优点:
- 快照文件比较小,加载速度快。
- 启动时可以快速恢复数据。
- 缺点:
- 数据的持久化不是实时的,可能会丢失最近几次的更新(取决于配置的保存频率)。
2. AOF(Append Only File)
- 概述:AOF 是通过记录所有写命令来实现持久化的。
- 工作原理:
- 每当执行写命令时,Redis 会将相应的命令追加到 AOF 文件中。
- AOF 可以配置为不同的同步策略,例如每个命令都同步(fsync always)、每秒同步(fsync everysec)或不进行同步(no fsync)。
- 优点:
- 相对实时,数据丢失的风险更小(取决于同步配置)。
- 更容易进行数据恢复,因为可以根据命令逐步重放数据。
- 缺点:
- AOF 文件通常比 RDB 文件大,加载和恢复速度相对较慢。
- 随着时间的推移,AOF 文件可能会变得庞大,需要进行重写(rewrite)以优化文件大小。
3. 混合持久化
- 概述:Redis 4.0 之后引入了混合持久化机制,将 RDB 和 AOF 结合使用。
- 工作原理:
- 在 AOF 文件中追加写命令的同时,定期生成 RDB 快照。
- 在恢复时,如果同时存在 AOF 文件和 RDB 快照,Redis 会优先加载 AOF 文件,以确保数据的最新状态。
- 优点:
- 结合了 RDB 和 AOF 的优点,既有较快的恢复速度,又能减少数据丢失风险。
三、Redis持久化配置与管理
可以在 redis.conf
文件中设置 ,也可以在 Redis 运行时使用命令动态调整
1、配置项
# RDB的快照频率配置(RDB默认启用,只需确保至少有一条save配置)
# save:此配置项指定了快照的保存条件
# 格式为 save <seconds> <changes>,表示在 <seconds> 秒内至少有 <changes> 次写操作后保存快照。
# 多个 save 条件之间并没有严格的优先级,而是并行工作。只要满足任何一条条件,Redis 就会执行快照保存。
# 例如:
save 900 1 # 如果在900秒内有至少1次写操作,则保存快照
save 300 10 # 如果在300秒内有至少10次写操作,则保存快照
save 60 10000 # 如果在60秒内有至少10000次写操作,则保存快照
# 开启AOF持久化
appendonly yes
# AOF的同步策略配置
# appendfsync:此配置项指定同步策略
# always每个命令都同步 everysec每秒同步 no不进行同步
# 例如:
appendfsync always # 每个命令都同步
2、动态配置
# 动态配置RDB的快照频率
config set save "900 1 300 10 60 10000"
# 启用 AOF
config set appendonly yes
# 动态配置AOF的同步策略
config set appendfsync always # 设置为每个命令都同步