Redis 崩溃不丢数据?揭秘Redis持久化

揭秘Redis三种持久化机制

Redis 持久化是指将内存中的数据持久化到磁盘,以防止服务重启或故障时数据丢失。Redis 提供了两种核心持久化机制:RDB(Redis Database)AOF(Append Only File),而 混合持久化 是 Redis 4.0 引入的一种结合两者优点的持久化方式。

一、RDB 持久化

RDB 是 Redis 默认的持久化方式,它通过生成内存数据的快照(二进制文件) 并保存到磁盘(默认文件为 dump.rdb)来实现持久化。

RDB 还有一个重要的用途,是可以分析Redis数据库里面内存占用分布,也就是分析大KEY,参考我这篇文章。
redis 内存使用率高居高不下,如何分析 key占用情况

1. 工作原理
  • 触发方式
    • 手动触发:执行 save 命令(阻塞 Redis 主线程,不推荐生产环境)或 bgsave 命令(fork 子进程处理快照,不阻塞主线程)。
    • 自动触发:通过配置文件 redis.conf 中的规则自动执行,例如:
      save 900 1    # 900秒内有1次写操作则触发
      save 300 10   # 300秒内有10次写操作则触发
      save 60 10000 # 60秒内有10000次写操作则触发
      
  • 执行流程
    1. 子进程(bgsave 时)读取内存数据,生成 RDB 快照文件。
    2. 快照生成完成后,替换旧的 RDB 文件。
2. 优缺点
  • 优点
    • 文件体积小:RDB 是二进制压缩文件,适合备份和传输。
    • 恢复速度快:加载 RDB 文件时直接解析二进制数据,比 AOF 快得多。
  • 缺点
    • 数据安全性低:快照是周期性生成的,若在两次快照之间发生故障,这段时间的数据会丢失。
    • fork 成本高bgsave 时 fork 子进程会消耗额外内存(尤其是数据量大时),可能导致短暂阻塞。

二、AOF 持久化

AOF 持久化通过记录所有写操作命令(如 set、hmset 等) 到日志文件(默认 appendonly.aof),Redis 重启时通过重新执行这些命令恢复数据。

在这里插入图片描述

1. 工作原理
  • 开启方式:在 redis.conf 中配置 appendonly yes 启用 AOF。
  • 命令记录:每执行一次写操作,命令会被追加到 AOF 缓冲区,再根据同步策略写入磁盘。
  • 同步策略(appendfsync 配置)
    • always:每次写操作立即同步到磁盘(安全性最高,但性能最差)。
    • everysec:每秒同步一次(默认,平衡安全性和性能,最多丢失1秒数据)。
    • no:由操作系统决定何时同步(性能最好,但安全性最低)。
  • AOF 重写:AOF 文件会随命令增多而变大,Redis 会通过 bgrewriteaof 命令(或自动触发)重写 AOF,去除冗余命令(如多次修改同一 key 的命令合并为最终结果),减小文件体积。
2. 优缺点
  • 优点
    • 数据安全性高:可通过同步策略控制数据丢失量(默认最多丢失1秒数据)。
    • 文件可读性强:AOF 是文本文件,可直接查看或编辑命令。
  • 缺点
    • 文件体积大:即使经过重写,AOF 文件通常也比 RDB 大。
    • 恢复速度慢:加载时需要重新执行所有命令,耗时较长。

三、混合持久化

混合持久化(Redis 4.0 引入)结合了 RDB 和 AOF 的优点,在 AOF 重写时,将数据以 RDB 格式写入 AOF 文件开头,后续追加增量的 AOF 命令

1. 工作原理
  • 开启方式:在 redis.conf 中配置 aof-use-rdb-preamble yes(Redis 5.0 后默认开启)。
  • 文件结构:AOF 文件分为两部分:
    • 开头:RDB 格式的全量数据快照。
    • 后续:重写后新增的 AOF 命令(增量数据)。
  • 恢复流程:加载时先解析 RDB 部分恢复全量数据,再执行后续 AOF 命令恢复增量数据。
2. 优缺点
  • 优点
    • 恢复速度快:比纯 AOF 快(开头是 RDB 快照)。
    • 数据安全性高:增量部分用 AOF 记录,数据丢失少。
    • 文件体积适中:比纯 AOF 小,比 RDB 灵活。
  • 缺点
    • 兼容性稍差:老版本 Redis(4.0 前)不支持混合持久化的 AOF 文件。

四、总结对比

特性RDBAOF混合持久化
数据安全性低(可能丢失大量数据)高(最多丢失1秒数据)高(结合两者优势)
恢复速度快(二进制解析)慢(重放命令)较快(RDB+增量AOF)
文件体积中等
适用场景备份、容忍数据丢失高安全性要求平衡速度与安全性

实际使用中,可根据业务对数据安全性和性能的要求选择:

  • 若追求速度和备份便捷性,选 RDB;
  • 若要求高数据安全性,选 AOF;
  • 若想平衡两者,优先启用混合持久化。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值