欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 【Redis 探秘】Redis 持久化机制:RDB 与 AOF

【Redis 探秘】Redis 持久化机制:RDB 与 AOF

2025/4/28 10:33:45 来源:https://blog.csdn.net/qq_37967783/article/details/143893126  浏览:    关键词:【Redis 探秘】Redis 持久化机制:RDB 与 AOF

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主

⛪️ 个人社区:个人社区
💞 个人主页:个人主页
🙉 专栏地址: ✅ Java 中级
🙉八股文专题:剑指大厂,手撕 Java 八股文

在这里插入图片描述

文章目录

      • Redis 持久化机制:RDB 与 AOF
        • 1.1 RDB(Redis Database Backup)
          • 1.1.1 工作原理
          • 1.1.2 优缺点
          • 1.1.3 配置示例
        • 1.2 AOF(Append Only File)
          • 1.2.1 工作原理
          • 1.2.2 优缺点
          • 1.2.3 配置示例
        • 1.3 RDB 和 AOF 的结合使用
          • 1.3.1 配置示例
        • 1.4.总结

Redis 持久化机制:RDB 与 AOF

Redis 提供了两种主要的持久化机制:RDB(Redis Database Backup)和 AOF(Append Only File)。这两种机制各有特点,适用于不同的场景。下面详细介绍这两种持久化机制的工作原理、优缺点以及配置方法。

1.1 RDB(Redis Database Backup)
1.1.1 工作原理
  • 快照:RDB 是通过创建数据集的时间点快照(snapshot)来实现持久化的。Redis 会定期将内存中的数据集写入到一个二进制文件(默认为 dump.rdb)中。
  • 触发条件
    • 手动触发:通过 SAVEBGSAVE 命令手动触发快照。
    • 自动触发:通过配置 save 参数,设置在特定条件下自动触发快照。例如:
      save 900 1      # 900秒内至少有1个key发生变化
      save 300 10     # 300秒内至少有10个key发生变化
      save 60 10000   # 60秒内至少有10000个key发生变化
      
1.1.2 优缺点
  • 优点

    • 恢复速度快:RDB 文件是一个紧凑的二进制文件,恢复速度较快。
    • 文件体积小:RDB 文件体积较小,适合备份和传输。
    • 配置简单:配置和管理相对简单。
  • 缺点

    • 数据丢失风险:如果 Redis 服务器在两次快照之间发生故障,可能会丢失这段时间内的数据。
    • 阻塞风险SAVE 命令会阻塞 Redis 服务器,直到快照完成。BGSAVE 命令会在后台执行,但仍然会占用一定的资源。
1.1.3 配置示例
# 开启 RDB 持久化
save 900 1
save 300 10
save 60 10000# RDB 文件名
dbfilename dump.rdb# RDB 文件存储路径
dir /var/lib/redis
1.2 AOF(Append Only File)
1.2.1 工作原理
  • 追加日志:AOF 通过记录服务器接收到的每个写操作命令,将这些命令以追加的方式写入到一个日志文件(默认为 appendonly.aof)中。
  • 重写机制:为了防止 AOF 文件过大,Redis 提供了重写机制(BGREWRITEAOF),将 AOF 文件中的命令进行优化和压缩,生成一个新的 AOF 文件。
  • 同步策略
    • always:每次写操作都同步到磁盘,最安全但性能最低。
    • everysec:每秒同步一次,平衡了安全性和性能。
    • no:不主动同步,依赖操作系统进行同步,性能最高但安全性最低。
1.2.2 优缺点
  • 优点

    • 数据安全性高:AOF 模式可以记录每一个写操作,即使 Redis 服务器突然宕机,也能恢复到最近的状态。
    • 灵活性高:可以通过配置不同的同步策略,平衡安全性和性能。
  • 缺点

    • 恢复速度慢:AOF 文件较大,恢复速度相对较慢。
    • 文件体积大:AOF 文件记录了所有的写操作,文件体积较大,需要定期进行重写。
    • 配置复杂:相对于 RDB,AOF 的配置和管理较为复杂。
1.2.3 配置示例
# 开启 AOF 持久化
appendonly yes# AOF 文件名
appendfilename "appendonly.aof"# 同步策略
appendfsync everysec# AOF 重写条件
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
1.3 RDB 和 AOF 的结合使用

为了兼顾数据的安全性和恢复速度,Redis 支持同时使用 RDB 和 AOF 持久化机制。这样可以在 RDB 提供的快速恢复和 AOF 提供的数据安全性之间找到平衡。

1.3.1 配置示例
# 开启 RDB 持久化
save 900 1
save 300 10
save 60 10000# RDB 文件名
dbfilename dump.rdb# RDB 文件存储路径
dir /var/lib/redis# 开启 AOF 持久化
appendonly yes# AOF 文件名
appendfilename "appendonly.aof"# 同步策略
appendfsync everysec# AOF 重写条件
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
1.4.总结
  • RDB:通过创建数据集的时间点快照来实现持久化,恢复速度快,文件体积小,但存在数据丢失风险。
  • AOF:通过记录每个写操作命令来实现持久化,数据安全性高,但恢复速度慢,文件体积大。
  • 结合使用:同时使用 RDB 和 AOF 持久化机制,可以在数据的安全性和恢复速度之间找到平衡。

精彩专栏推荐订阅:在下方专栏👇🏻
✅ 2023年华为OD机试真题(A卷&B卷)+ 面试指导
✅ 精选100套 Java 项目案例
✅ 面试需要避开的坑(活动)
✅ 你找不到的核心代码
✅ 带你手撕 Spring
✅ Java 初阶

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词