完整教程:Redis 提供了两种主要的持久化机制:RDB 和 AOF

news/2025/9/30 11:27:03/文章来源:https://www.cnblogs.com/wzzkaifa/p/19120264

Redis 提供了两种关键的持久化机制:RDB 和 AOF。从 Redis 4.0 开始,还引入了混合持久化的概念,将两者结合使用。


1. RDB (Redis Database)

RDB 持久化是在指定的时间间隔内,生成内存中整个数据集的一个快照(Snapshot),并将其保存到一个二进制文件(默认名为 dump.rdb)中。

工作原理
  1. 创建快照:Redis 会 fork 一个子进程。
  2. 数据写入:子进程将当前内存中的所有数据写入一个临时的 RDB 记录。
  3. 替换旧文件:当子进程完成写文件后,会用新的 RDB 文件替换旧的 RDB 文档。
触发方式
  • 手动触发
    • SAVE 命令:同步执行,会阻塞所有来自客户端的请求,直到快照完成。生产环境不建议利用
    • BGSAVE 命令:异步执行,Redis 会 fork 子进程来创建快照,主进程继续处理命令。推荐使用
  • 自动触发:在 redis.conf 配置文件中设置 save 规则。

    bash复制代码

    save 900 1      # 在900秒(15分钟)内,如果至少有1个key发生变化,则触发bgsave
    save 300 10     # 在300秒(5分钟)内,如果至少有10个key发生变化,则触发bgsave
    save 60 10000   # 在60秒内,如果至少有10000个key发生变化,则触发bgsave
优点
  • 性能高:RDB 文档是紧凑的二进制资料,非常适合用于备份、灾难恢复全量复制
  • 恢复速度快:重启 Redis 时,恢复大数据集的速度远快于 AOF。
  • 最大化性能:父进程无需进行任何磁盘 I/O 操作,由子进程完成。
缺点
  • 数据安全性低:容易丢失数据。因为它是定时执行的,如果 Redis 在两次快照之间宕机,则会丢失最终一次快照之后的所有数据。
  • fork 可能阻塞:虽然 BGSAVE 是异步的,但 fork 子进程的过程,如果数据集非常大,可能会导致主进程短暂阻塞(毫秒级)。

2. AOF (Append Only File)

AOF 持久化会记录每一个对数据库进行写操作的命令,并将这些命令追加到一个日志文档的末尾。当 Redis 重启时,会重新执行 AOF 文件中的所有命令来重建数据。

工作原理
  1. 命令追加:每执行一个写命令,Redis 会将其以 Redis 协议格式追加到 aof_buf 缓冲区。
  2. 文件写入与同步:根据设置的同步策略,将缓冲区的内容写入和同步到 AOF 磁盘文件。
同步策略 (appendfsync)

在 redis.conf 中通过 appendfsync 选项配置,这是影响性能和数据安全性的关键。

  • no:由操作系统决定何时同步。写入最快,但数据安全性最差,宕机时可能丢失一个同步周期内的内容。
  • everysec默认推荐。每秒同步一次。是性能和内容安全性的良好折衷,最多丢失1秒的数据。
  • always:每执行一个写命令就同步一次。信息最安全,但性能最差,因为每个命令都会进行磁盘 I/O,大大降低了 Redis 的速度。
AOF 重写 (Rewrite)

随着写操作的增多,AOF 文件会变得越来越大。Redis 提供了 BGREWRITEAOF 命令(或自动触发)来重写 AOF 文件。

  • 原理:fork 一个子进程,根据当前数据库状态创建新的 AOF 文件。它会读取所有键值对,然后用一条命令(如 SET)记录一个键的当前值,从而消除冗余命令(如多个 INCR),使文件体积最小化。
优点
  • 数据安全性高:根据 appendfsync 配置,最多只会丢失一秒的数据,甚至完全不丢失。
  • 可读性强:AOF 文件是纯文本格式,记录了所有操作命令,便于理解和分析。
缺点
  • 文件体积大:通常 AOF 资料会比同数据的 RDB 文件大。
  • 恢复速度慢:恢复数据时需要重新执行所有命令,比 RDB 慢。
  • 性能影响:在写操作频繁且配置为 always 策略时,对性能影响较大。

3. 混合持久化 (RDB + AOF)

这是 Redis 4.0 引入的机制,结合了 RDB 和 AOF 的优点。

工作原理
  • 在 AOF 重写时,子进程不再是单纯地将命令写入新的 AOF 文件,而是先将当前数据集以 RDB 格式写入文件开头
  • 然后,再将重写缓冲区的增量命令(以 AOF 格式)追加到 RDB 信息后面
  • 生成的新文件是一个前半部分是 RDB 快照,后半部分是增量 AOF 日志的混合文件。
优点
  • 结合两者优点:重启时,先加载 RDB 部分的内容(速度快),再重放增量 AOF 命令(数据新),使得重启效率大幅提升。
  • 数据更安全:同时拥有 AOF 的实时持久化特性。

启用方式:在 redis.conf 中设置 aof-use-rdb-preamble yes(默认已是 yes)。


总结与选择建议

特性RDBAOF
数据格式二进制压缩快照文本协议写命令日志
数据安全性低,可能丢失分钟级素材高,根据配置最多丢失1秒数据
文件体积大(但可重写优化)
恢复速度
性能影响fork 时短暂阻塞写入频繁时对性能有影响(取决于同步策略)
生产环境建议:
  1. 单纯使用 RDB:如果你希望获得最佳性能,并且能够容忍分钟级别的材料丢失(如用于缓存),可以只使用 RDB。
  2. 单纯使用 AOF:如果你对数据安全性要求极高,不允许任何数据丢失(如存储重要状态),并且可以接受稍慢一点的性能,可以只使用 AOF(配置为 appendfsync everysec)。
  3. 混合持久化(推荐)这是目前最主流和推荐的方式。它提供了快速的恢复速度良好的数据安全性,在性能和可靠性之间取得了最佳平衡。只需同时开启 RDB 和 AOF 即可(appendonly yes + aof-use-rdb-preamble yes)。

最重要的建议:无论使用哪种策略,定期将 RDB 或 AOF 文件备份到异地机房或云存储上,以防物理灾难。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/922768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本土化战略赋能:Gitee如何领跑中国DevOps黄金赛道

本土化战略赋能:Gitee如何领跑中国DevOps黄金赛道 中国软件开发领域正在经历一场深刻的效率革命。随着国家"十四五"数字经济规划明确要求企业加速数字化转型,DevOps作为连接开发与运维的关键技术栈,其市场…

陕西省建设注册中心网站建设网站需要哪些

时序数据库全称为时间序列数据库。时间序列数据库指主要用于处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。 时间序列数据主要由电力行业、化工行业、气象行业、地理信息等各类型…

打印机错误0x0000709,问题排查和修复指南

办公时突然弹出打印机报错窗口,电脑显示打印机错误 0x0000709不知道什么意思,连重新连接打印机都不管用,急着打文件的话真的很闹心。但其实打印机错误码是有规律的,不同代码对应不同故障原因,比如 0x0000709 多和…

中国科技成就素材seo引擎优化

AlternationCount属性:表示有几行不同的颜色来回替换,如果设置2则表示有两个颜色交替循环 AutoGenerateColumns属性:是否生成列 CanUserAddRows属性:用户是否可以添加行 CanUserDeleteRows属性:用户是否可以删除行 …

2025.9.29 测试

2025.9.29 测试T1. 马赛克上色 就是个随机题目 告诉我们烤柿要大胆 所有点都是偶度数,直接构造欧拉回路,三个截一段输出 然后有奇数点呢? 这里构出一种正确性很高的 trick 度数越小要求越严格,于是我们每次选出一个…

深度学习(CVAE)

自编码器这类模型有下面几个: 自编码器(AE):目标是压缩与重建。它是一个判别模型,目标是学习数据的高效表示,主要用于降维、去噪和数据压缩,而不是生成新数据。 变分自编码器(VAE): 学习数据的概率分布并生成…

c# aot orm 框架测试 mysql

SqlSugar 的文档比较齐全,一次通过:https://www.donet5.com/Home/Doc?typeId=2574,但是 SqlSugar Aot 发布在 40M 左右,感觉太大了点。 FreeSql 的 AOT 文档就不太友好了,试了一下各种报错,最后发现要使用 Free…

深入解析:论文阅读:硕士学位论文 2025 面向大语言模型的黑盒对抗性攻击与防御关键技术研究

深入解析:论文阅读:硕士学位论文 2025 面向大语言模型的黑盒对抗性攻击与防御关键技术研究2025-09-30 11:09 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !import…

网站常用的js效果做的网站被挂马

Java 汉字转拼音 1.TinyPinyin 功能: 适用于Java和Android的快速、低内存占用的汉字转拼音库。 特性: 生成的拼音不包含声调,均为大写;支持自定义词典,支持简体中文、繁体中文;执行效率很高(Pinyin4J的…

怎么给汽车网站做推广郑州建设局官网

1、使用父子关系调整下使其更加整洁 2、比如说我修改了下url,那所有的页面都要更改 优化:把这个url抽出来,新建一个Api文件夹用于存放所有接口的url,在业务里只需要关注业务就可以 使用时 导包 发请求 如果想要更改路径,在这里…

PK-2877电流互感器在高频脉冲电源模块测试中的应用方案

一、项目背景与需求 一家专注于高频脉冲电源模块研发与生产的电子设备企业,其产品广泛应用于工业自动化控制、通信基站电源等领域。这些电源模块在工作时会产生高频脉冲电流,电流峰值可达100A,脉冲频率在数百kHz至数…

VC++ 使用OpenSSL创建RSA密钥PEM档案

VC++ 使用OpenSSL创建RSA密钥PEM档案pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monac…

CF1699D Almost Triple Deletions

被神秘贪心标签误导了。 你考虑答案的最终形式长什么样,就是保留若干个相同的数,再将其中间的区间整段整段删干净。 你先枚举保留什么数,然后发现我们可以设 \(f_{i}\) 表示到了第 \(i\) 个位置最多能保留多少个数,…

QMT回测模式为什么要在副图进行

在QMT系统中,回测必须以副图模式进行,主要有以下原因: (1)数据处理与性能优化 副图模式允许策略专注于历史数据的分析和计算,避免与主图的实时行情显示产生冲突。回测过程中,系统需要遍历大量历史K线数据,副图…

DAY20 Channel(通道)NIO(同步,非阻塞)、Selector(选择器)、NIO2-AIO(异步、非阻塞) - 指南

DAY20 Channel(通道)NIO(同步,非阻塞)、Selector(选择器)、NIO2-AIO(异步、非阻塞) - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !impor…

详细介绍:Servlet完全上手:核心语法与生命周期详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

详细介绍:支持17种方言10种外语!阿里最新AI语音合成模型Qwen3-TTS-Flash震撼发布

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

判断权限通过遍历二叉树路由删除权限不展示的前端组件

判断权限通过遍历二叉树路由删除权限不展示的前端组件点击查看代码 def clean_node(nodes, full_name):names = full_name.split(.)current_name = names[0]for i, node in enumerate(nodes):assert isinstance(node, …

外国人做的网站wordpress主题大全

文章目录 rollup watch 实现流程watchWatchEmitter 实现 watchInternalWatcher 管理整个 watch 阶段Task 运行任务FileWatcher 实现文件监听 rollup watch 实现流程 每一个配置了 watch 的配置项都会变成一个 Task 任务,每个任务通过 FileWatcher 即 chokidar 进行…

DSA:DeepSeek Sparse Attention

DeepSeek-V3.2-Exp 是一个基于稀疏注意力机制(DSA,DeepSeek Sparse Attention)优化的长上下文处理模型,其核心创新在于高效地处理长序列输入,同时保持模型性能。🧠 什么是 DSA(DeepSeek Sparse Attention)? …