Redis混合持久化原理

文章目录

  • 1.Redis混合持久化原理
  • 2.采用混合持久化时,用的aof文件和rdb分别记录的是什么时候的数据?
  • Redis 宕机,数据会丢失么?

1.Redis混合持久化原理

Redis的混合持久化(Hybrid Persistence)是一种结合了RDB(Redis Database Backup)和AOF(Append Only File)持久化方式的策略。这种策略旨在结合两者的优点,提高数据的安全性和恢复速度,同时减少数据丢失的风险。以下是混合持久化原理的详细解释:

  1. RDB持久化

    • RDB持久化通过周期性地创建内存数据的快照来保存数据。
    • 这些快照保存在磁盘上的RDB文件中,可以用于快速恢复整个Redis数据库的状态。
  2. AOF持久化

    • AOF持久化记录每个写操作命令,并将其追加到AOF文件中。
    • 当Redis重启时,可以通过重放AOF文件中的命令来重建数据库状态。
  3. 混合持久化工作流程

    • 在混合持久化模式下,Redis首先使用RDB方式创建一个数据快照。
    • 随后,Redis切换到AOF模式,继续记录所有写操作命令。
    • 当Redis重启时,它会首先加载RDB快照文件以快速恢复到快照时的状态。
    • 然后,Redis会读取AOF文件,重放快照之后的所有写操作命令,以恢复到最新状态。
  4. 优点

    • 快速启动:由于RDB文件通常比AOF文件小,且恢复速度快,因此可以使用RDB文件快速启动Redis服务器。
    • 数据完整性:AOF文件记录了快照之后的所有写操作,即使快照文件损坏或丢失,也可以通过AOF文件恢复数据。
    • 减少数据丢失:在混合持久化模式下,即使发生故障,也只会丢失最后一次快照之后的数据,而不是所有未持久化的数据。
  5. 配置

    • 要启用混合持久化,需要在Redis配置文件中同时启用RDB和AOF持久化,并设置适当的同步策略。
    • 例如,可以配置自动触发RDB快照的保存条件,以及AOF文件的同步频率。
  6. 注意事项

    • 混合持久化虽然提高了数据安全性,但也可能增加系统的复杂性和维护成本。
    • 在某些情况下,如果AOF文件过大,重放所有命令可能会影响Redis重启的速度。

混合持久化是一种灵活的持久化策略,适用于对数据安全性和恢复速度都有较高要求的场景。通过合理配置和优化,可以充分发挥混合持久化的优势。

2.采用混合持久化时,用的aof文件和rdb分别记录的是什么时候的数据?

在 Redis 中采用混合持久化时,AOF 文件和 RDB 文件各自记录的数据范围是不同的,具体如下:

  1. RDB 文件

    • RDB 文件记录的是在某一个时间点(由 save 配置或手动执行 BGSAVE/SAVE 命令触发)Redis 内存中所有数据的快照。快照就是把Map序列化进去RDB文件!!!
    • 这个快照包含了那一刻所有键值对的完整状态,可以用来快速恢复 Redis 服务器到该时间点的状态。
  2. AOF 文件

    • AOF 文件记录的是自上一次 RDB 快照创建以来,所有写操作命令的序列。
    • 当 Redis 重启时,AOF 文件用于重放这些命令,以便将服务器状态从 RDB 快照的结束点恢复到最新的状态。
    • AOF 文件提供了更细粒度的数据恢复,因为它记录了每一个写操作,这意味着即使在多次快照之间发生故障,也只会丢失最后一次快照后的数据。

混合持久化的工作原理是:

  • 当 Redis 启动时,它会首先加载 RDB 文件以快速恢复到某个时间点的状态。
  • 然后,Redis 会继续从 AOF 文件中读取自 RDB 快照以来的所有写操作命令,并按顺序执行这些命令,以确保数据的完整性和一致性。

这种混合持久化策略结合了 RDB 和 AOF 的优点:

  • RDB 提供了快速的数据恢复能力,适合大规模数据的快速加载。
  • AOF 提供了更好的数据持久化安全性,因为它记录了所有的写操作命令,减少了数据丢失的风险。

Redis 宕机,数据会丢失么?

如果我们没开启任何持久化机制,那么会丢失全部数据,否则只会丢失部分数据,丢失数据的多少取决于持久化配置。
Redis 提供了两套持久化机制,一个是 RDB,它会根据情况定期的 Fork 出一个子进程,生成当前数据库的全量快照;另一个是 AOF,它通过向 AOF 日志文件追加每一条执行过的指令实现。
而对于 RDB 快照,假如我们在 RDB 快照生成后宕机,那么会丢失快照生成期间全部增量数据,如果在连快照都没成功生成,那么就会丢掉全部数据。
而当我们仅开启了 AOF 时,丢失数据的多少取决于我们设置的刷盘策略:当设置为每条指令执行后都刷盘 Always,我们最多丢失一条指令;当设置为每秒刷一次盘的 Eversec 时,最多丢失一秒内的数据;当设置为非主动刷盘的 No 时,则可能丢失上次刷盘后到现在的全部数据。
所以,我们为了避免数据过多丢失,一般都会采用 AOF 方式。由于通过 AOF 恢复数据相对比较耗时,因此 Redis 在 4.0 以后允许通过 aof‐use‐rdb‐preamble 配置开启混合持久化。
当 AOF 重写时,它将会先生成当前时间的 RDB 快照(序列化对象),然后将序列化对象写入新的 AOF 文件,接着再把增量数据追加到这个新 AOF 文件中。如此一来,当 Redis 通过 AOF 文件恢复数据时,将会先加载 RDB,然后再重放后半部分的增量数据。这样就可以大幅度提高数据恢复的速度。

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

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

相关文章

【JavaEE】【多线程】定时器

目录 一、定时器简介1.1 Timer类1.2 使用案例 二、实现简易定时器2.1 MyTimerTask类2.2 实现schedule方法2.3 构造方法2.4 总代码2.5 测试 一、定时器简介 定时器:就相当于一个闹钟,当我们定的时间到了,那么就执行一些逻辑。 1.1 Timer类 …

【HTML】之基本标签的使用详解

HTML(HyperText Markup Language,超文本标记语言)是构建网页的基础。它不是一种编程语言,而是一种标记语言,用于描述网页的内容和结构。本文将带你了解HTML的基础知识,并通过详细的代码示例和中文注释进行讲…

PyMol3.0 Educational Version激活教程(激活一次可用半年)

访问网址:https://www.pymol.org/edu/ 填写学生信息表单然后pymol会给邮箱发一个邮件,点开邮件中的网址便可以下载license并且可以从官网下载pymol3.0版本(推荐使用Windows EXE Installler)安装好之后打开软件,然后会弹…

异地组网最简单的方法

异地组网的方法多种多样,每种方法都有其特定的优缺点和适用场景,本期梳理一些相对简单且常用的异地组网方法,开始~ 一、使用硬件路由器的 VPN 功能 前提条件 你需要有支持 VPN 功能的路由器,如华硕、中兴等品牌。这些路由器在设置…

【Java基础】2、Java基础语法

f2/fnf2:选中点中的文件名 ​​​​​​​ 1.注释 为什么要有注释? 给别人和以后的自己可以看懂的解释 注释含义 注释是在程序指定位置的说明性信息;简单理解,就是对代码的一种解释 注释分类 单行注释 //注释信息 多行注释…

使用AMD GPU和LangChain构建问答聊天机器人

Question-answering Chatbot with LangChain on an AMD GPU — ROCm Blogs 作者:Phillip Dang 2024年3月11日 LangChain是一个旨在利用语言模型强大功能来构建前沿应用程序的框架。通过将语言模型连接到各种上下文资源并基于给定的上下文提供推理能力,L…

20241027_北京郊游香山公园

这次是第二次去香山公园,天气不是很晴朗,有雾。 乘坐地铁到的时候,第一趟车,我这么聪明,那肯定是不会坐的,因为没有座位,路程30多分钟,我都20多岁了,身体那肯定顶不住。 …

【React】React18核心源码解读

前言 本文使用 React18.2.0 的源码,如果想回退到某一版本执行git checkout tags/v18.2.0即可。如果打开源码发现js文件报ts类型错误请看本人另一篇文章:VsCode查看React源码全是类型报错如何解决。 阅读源码的过程: 下载源码 观察 package…

亚信安全DeepSecurity中标知名寿险机构云主机安全项目

近日,亚信安全DeepSecurity成功中标国内知名寿险机构的云主机安全项目。亚信安全凭借在云主机安全防护领域的突出技术优势,结合安全运营的能力,以“实战化”为指导,为用户提供无惧威胁攻击、无忧安全运营的一站式云安全体系&#…

前端 eslint 配置,以及在git提交之前自动format

目录 1、配置eslint步骤 1、eslint安装配置步骤 2、配置scripts步骤 3、测试eslint 2、配置git-hook1、安装环境2、最终效果 众所周知,前端项目可以在报很多error的情况下运行。但是良好的代码规范仍然有利于项目的开发维护,这里提供我的规范&#xff0c…

vue使用阿里svg图标

最近开发项目的写前端时候,发现element的图标库不能满足我的需求,当然,大部分是够用的,不过某些特定按钮没有合适的图标,我是发现没有批量导入按钮的图标,所以找了阿里的适量图标库来使用 阿里矢量图标库 阿里矢量图…

深入了解 kotlinx-datetime:配置与使用指南

深入了解 kotlinx-datetime:配置与使用指南 在Kotlin多平台开发中,处理日期和时间是常见的需求。kotlinx-datetime库提供了强大且简洁的API来帮助开发者应对这一挑战。本文将详细介绍如何配置kotlinx-datetime库,并通过生动的示例演示其核心…

ventoy安装和使用

本文涉及一种快捷安装不同版本操作系统的工具的安装和使用。 背景 笔者以前安装系统,一般是先下载系统ISO镜像,使用UltraISO将镜像写入U盘,然后用U盘启动。 近年来着手国产化的适配工作,当然因故无法接触核对业务,主…

《Python游戏编程入门》注-第4章1

《Python游戏编程入门》的第4章是“用户输入:Bomb Cathcer游戏”,通过轮询键盘和鼠标设备状态实现Bomb Cathcer游戏。 1 Bomb Cathcer游戏介绍 “4.1 认识Bomb Cathcer游戏”内容介绍了Bomb Cathcer游戏的玩法,即通过鼠标来控制红色“挡板”…

Unity3D学习FPS游戏(5)武器瞄准和准星

前言:一个FPS游戏最基本的角色控制,在前面几篇已经基本实现,接下来我们将进入到武器篇。本篇将实现武器武器瞄准和准星。 武器瞄准和准星 武器瞄准思路实现效果 武器准星思路实现效果 补充知识协程线性插值 武器瞄准 思路 FPS游戏在准备开枪…

vue-echarts使用

vue-echarts使用 排名柱状图示例代码 汇总示例代码 平均时效示例代码 全图 排名柱状图 示例 代码 // 排名趋势<!-- 排名数据趋势图 --><div class"rank"><div class"rank_title"><div class"rank_title_left"><spa…

【04】RabbitMQ的集群机制

1、RabbitMQ的性能监控 关于RabbitMQ的性能监控&#xff0c;在管理控制台中提供了非常丰富的展示。例如&#xff1a;首页这个整体监控页面&#xff0c;就展示了非常多详细的信息&#xff1a; 还包括消息的生产消费频率、关键组件的使用情况等等非常多的消息。都可以在这个管理…

Segugio:一款针对恶意软件的进程执行跟踪与安全分析工具

关于Segugio Segugio是一款功能强大的恶意软件安全分析工具&#xff0c;该工具允许我们轻松分析恶意软件执行的关键步骤&#xff0c;并对其进行跟踪分析和安全审计。 Segugio允许执行和跟踪恶意软件感染过程中的关键步骤&#xff0c;其中包括从点击第一阶段到提取恶意软件的最…

YOLO-FaceV2:A Scale and Occlusion Aware Face Detector

摘要 近年来&#xff0c;基于深度学习的人脸检测算法取得了巨大进展。这些算法一般可以分为两类&#xff0c;即像Faster R-CNN这样的两阶段检测器和像YOLO这样的一阶段检测器。由于一阶段检测器在精度和速度之间取得了更好的平衡&#xff0c;因此已被广泛应用于多种场景。在本…

贪心算法与盛雨水问题

啥是盛雨水问题&#xff1f;给个图就熟悉了 欸&#xff1f; 这其中的关键在于&#xff1a; 1. 容量2D化就是长 * 宽 2. 木桶效应&#xff1a;宽取决于短板。 那我们来分析&#xff0c;怎么样能达到最佳的结果呢&#xff1f;穷举一下所有可能性不就好了&#xff1f;每两个板子…