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   # 设置为每个命令都同步

posted on 2024-10-28 18:05  春与青溪长  阅读(55)  评论(0编辑  收藏  举报