Redis两大持久化方式

news2025/1/17 0:00:32

Redis具有两种主要的持久化方式:RDB(Redis Database Backup)和AOF(Append-Only File)。
在这里插入图片描述

1. RDB持久化方式

1.1 RDB概述

RDB(Redis Database Backup)
RDB是Redis进行快照持久化的一种方式。它周期性地将内存中的数据集快照持久化到硬盘上的RDB文件中。RDB文件保存了某个时间点上的Redis数据集的快照。

  • 优点:RDB快照持久化方式非常适合用于备份数据以及进行全量数据的快速恢复,因为它提供了非常快速的恢复速度。
  • 缺点:可能会导致在最后一次持久化时出现的数据丢失,因为RDB文件是定期生成的,并不是实时保存数据的变更。
  • 适用场景:用于数据备份、周期性的全量恢复。不适合对数据进行频繁的增量备份。

1.2 RDB持久化原理

在这里插入图片描述

RDB 的执行原理如下:

  1. 触发机制
    RDB 快照生成可以通过手动执行 SAVE 或者 BGSAVE 命令,或者在配置文件中设置自动触发快照生成的条件。BGSAVE 是后台异步执行,不会阻塞主线程。

  2. 内存快照
    当执行 BGSAVE 命令时,Redis 会派生出一个子进程,子进程负责将 Redis 内存中的数据集写入临时文件。此过程中,父进程(主 Redis 进程)可以继续处理客户端请求,因为子进程负责数据的持久化,不影响主进程的运行。

  3. 写入临时文件
    子进程将内存数据写入一个临时文件中。这个过程中,Redis 使用了 copy-on-write(写时复制)机制,保证了在持久化的同时不影响 Redis 主进程对数据的操作。

  4. 替换旧 RDB 文件
    当快照写入完毕后,Redis 会用新的 RDB 文件替换旧的 RDB 文件,通常会使用临时文件先写入,写入成功后再原子性地替换。

  5. 数据恢复
    当需要恢复数据时,Redis 可以直接通过加载 RDB 文件来还原内存中的数据状态,将 RDB 文件重新加载到内存中进行数据恢复。

  6. 数据持久化时间间隔
    在配置文件中可以设置数据持久化的时间间隔,以决定执行快照的频率。较长的时间间隔可能会导致较多数据丢失,较短的时间间隔会增加持久化的开销,因此需要权衡设置。
    在这里插入图片描述

2. AOF持久化方式

2.1 AOF概述

AOF(Append-Only File)
AOF记录了所有写命令,以追加(append)方式保存到文件中,使得可以重新执行这些命令来恢复原始数据集。

  • 优点:AOF记录了每次写操作的日志,因此能够提供更好的数据完整性。即使发生断电等情况,根据AOF文件记录的命令,可以精确恢复出数据。
  • 缺点:相对于RDB,AOF文件通常较大,且恢复速度比RDB慢,因为它需要逐条重新执行记录的命令。
  • 适用场景:适用于需要更高数据完整性和对数据进行实时增量备份的场景。

2.2 AOF持久化原理

在这里插入图片描述

  1. 写入模式:AOF 文件记录了所有发生的写命令(例如 SET、INCR、DEL 等),以文本形式记录,每个命令以一行的方式追加到文件的末尾。

  2. AOF Rewrite:为了避免 AOF 文件过大,Redis 会周期性地对 AOF 文件进行重写(AOF Rewrite)。重写的过程中会创建一个新的 AOF 文件,这个新文件仅包含了重写时刻之后的有效写命令,且采用紧凑的格式。重写后,旧的 AOF 文件被删除,新的 AOF 文件替换原来的文件,以减小 AOF 文件的大小。

  3. 启动时恢复数据:Redis 在启动时会先加载 AOF 文件来恢复数据,通过逐条重新执行文件中记录的命令,将数据还原到内存中。

  4. AOF 文件的同步:Redis提供了多种AOF同步策略,如always(每条命令都同步到磁盘),everysec(每秒同步一次),no(由操作系统决定同步时间点)。这些同步策略可以影响数据的持久性与性能之间的平衡。

3. 如何抉择?

选择使用 RDB 还是 AOF(或两者结合)应根据业务需求和系统特点做出考量。以下是一些指导方针,以便更好地选择适合的持久化方式:

  • RDB 的适用场景:
    对数据恢复速度要求高:RDB 文件是一种快速恢复数据的方法,适合对快速恢复有需求的场景。
    定期备份:适用于进行定期全量备份和快速恢复数据的场景。
    较少关注数据完整性:对于某些业务场景,如临时数据或能够容忍某些数据丢失的情况,可以考虑使用RDB方式。

  • AOF 的适用场景:
    数据完整性要求高:AOF 记录了每次写操作,提供了更好的数据完整性保障,适合对数据完整性要求高的场景。
    实时增量备份:适用于对数据实时进行增量备份,对业务数据的每一次写操作都进行持久化。
    能接受稍慢一些的恢复速度:相对于 RDB,AOF 文件恢复速度可能稍慢一些,但提供了更好的数据完整性保障。

  • RDB 与 AOF 结合的适用场景:
    结合使用 RDB 和 AOF 可以兼顾快速的恢复速度和数据完整性,适合对数据完整性和恢复速度都有要求的业务场景。这种结合方式可以充分发挥两者各自的优势,提高持久化的可靠性。

  • 总体指导方针:
    数据重要性:如果数据完整性至关重要,则倾向于选择 AOF。
    恢复速度需求:如果对恢复速度要求很高,则倾向于选择 RDB。
    数据量和性能:AOF 文件可能较大,会影响性能,需根据数据量和系统特点来决定使用哪种方式或其组合。
    在这里插入图片描述

综合考虑业务对数据完整性、恢复速度和性能的需求,可以选择合适的持久化方式或它们的组合,以达到最优的持久化效果。

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

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

相关文章

【Javascript】Javascript高级程序设计:dom 随手笔记

文章目录 一、dom 元素类型1.1 Node1.2 document1.3 Element1.4 Text 二、dom 操作2.1 querySelector、querySelectorAll2.2 元素遍历2.3 classList 操作2.4 焦点管理2.5 HTMLDocument 变化2.6 自定义数据属性2.7 插入标记2.7.1 innerHTML2.7.2 outerHTML 2.8 scrollIntoView 三…

【推荐系统】推荐算法:冷启动-召回-粗排-精排-重排 解读

【推荐系统】推荐算法:冷启动-召回-粗排-精排-重排 解读 文章目录 【推荐系统】推荐算法:冷启动-召回-粗排-精排-重排 解读1. 介绍2. 冷启动2.1 用户冷启动2.1.1 利用用户注册信息冷启动2.1.2 好物推荐冷启动2.1.3 问题启发式冷启动2.1.4 社交冷启动2.1.…

Qt程序执行编译输出内容解释

以这个为例: D:\SoftwareInstall\Qt6\Tools\QtCreator\bin\jom\jom.exe -f Makefile.Debug cd AuthorizeTools\ && ( if not exist Makefile D:\SoftwareInstall\Qt6\5.15.2\msvc2019_64\bin\qmake.exe -o Makefile E:\Coding\project\DigitalCamera\digita…

渗透测试流程是什么?这篇给你讲清楚!

在学习渗透测试之初,有必要先系统了解一下它的流程,静下心来阅读一下,树立一个全局观,一步一步去建设并完善自己的专业领域,最终实现从懵逼到牛逼的华丽转变。渗透测试是通过模拟恶意黑客的攻击方法,同时也…

ceph高可用、手动安装

操作系统:centos8 三台服务器: 192.168.6.22:mon,mgr,mds,osd 192.168.6.23:mon,mgr,mds,osd 192.168.6.24:mon,mgr,mds,osd 正式环境osd和mon不应该在一个节点,建议osd单独服务器安装。 ceph版本&am…

python scrapy 报错 DEBUG: Ignoring response 403

DEBUG: Ignoring response <403 https://digital.ucas.com/coursedisplay/results/courses?studyYear2024>: HTTP status code is not handled or not allowed原因&#xff1a;被屏蔽了&#xff0c;在settings.py 里面配一下USER_AGENT&#xff08;随便写一个就行&#…

历年上午真题笔记(2014年)

解析:A 网络设计的三层模型 : 接入层:Layer 2 Switching,最终用户被许可接入网络的点,用户通过接入层可以访问网络设备。 汇聚层:Layer2/3 Switching,访问层设备的汇聚点,负责汇接配线单元,利用二、三层技术实现工作组分段及网络故障的隔离,以免对核心层网络设备造…

A股风格因子看板 (2023.10 第13期)

该因子看板跟踪A股风格因子&#xff0c;该因子主要解释沪深两市的市场收益、刻画市场风格趋势的系列风格因子&#xff0c;用以分析市场风格切换、组合风格暴露等。 今日为该因子跟踪第13期&#xff0c;指数组合数据截止日2023-09-30&#xff0c;要点如下 近1年A股风格因子检验统…

第3天:基础入门-抓包amp;封包amp;协议amp;APPamp;小程序amp;PC应用amp;WEB应用

第3天&#xff1a;基础入门-抓包&封包&协议&APP&小程序&PC应用&WEB应用 1、抓包技术应用意义//有些应用或者目标是看不到的&#xff0c;这时候就要进行抓包 2、抓包技术应用对象 //app,小程序 3、抓包技术应用协议 //http&#xff0c;socket 4、抓包技…

MaxEnt(最大熵)模型使用方法-系统教程

MaxEnt模型是通过物种已知分布数据和相关环境变量来推算物种的生态需求&#xff0c;然后将运算结果投射至不同的空间和时间中以预测物种的潜在分布区。由于对样本需求量要求小、预测能力优等特点&#xff0c;已被广泛应用于物种潜在分布区预测、外来入侵物种风险评估及气候变化…

11月17号|Move生态Meetup相约浪漫土耳其

Move是基于Rust编程语言&#xff0c;由Mysten Labs联合创始人兼CTO Sam Blackshear在Meta的Libra项目中开发而来&#xff0c;旨在为开发者提供比现有区块链语言更通用的开发语言。Sam的目标是创建Web3的JavaScript&#xff0c;即一种跨平台语言&#xff0c;使开发人员能够在多个…

希尔顿集团飞猪旗舰店携海外酒店开启双11全球旅行囤货潮

【中国&#xff0c;上海&#xff0c;10月31日】继十一黄金周出游需求释放&#xff0c;旅游市场回归超预期&#xff0c;希尔顿集团洞悉旅行者们对于探索目的地的热情不减&#xff0c;于今日在希尔顿集团飞猪旗舰店正式上线2023年双11系列活动&#xff0c;并首次布局海外酒店&…

【Linux】进程状态与进程优先级及其相关概念

文章目录 进程基本概念描述进程-PCBtask_struct-PCB的一种task_ struct内容分类 组织进程查看进程通过系统调用获取进程标示符通过系统调用创建进程-fork初识fork原理fork做了什么?fork是如何看待进程的fork如何理解两个返回值的功能 进程状态进程状态&#xff1a;1.普遍的操作…

原来低代码开发如此简单

目录 一、技术介绍 二、设计原理 三、界面展示 四、功能框架 我们在低代码领域探索了多年&#xff0c;从2014 开始研发低代码前端渲染&#xff0c;从 2018 年开始研发后端低代码数据模型&#xff0c;发布了JNPF快速开发平台。 JNPF低代码是一款新奇、实用、高效的企业级软件开发…

Jmeter(二十):jmeter对图片验证码的处理(超详细)

jmeter对图片验证码的处理 在web端的登录接口经常会有图片验证码的输入&#xff0c;而且每次登录时图片验证码都是随机的&#xff1b;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段&#xff0c;然后再登录接口中使用&#xff1b; 同时&#xff0c;我也准…

微波上下变频装置系列-80704A/80705A/80719/80720 上下变频装置

微波上下变频装置系 80704A/80705A/80719/80720 上下变频装置系列产品采用1U高度19英寸标准机箱结构&#xff0c;内置低相噪合成本振源&#xff0c;基于模块化可程控的微波上下变频通道&#xff0c;具有结构紧凑、操作简便、技术指标高和环境适应性强等特点。上下变频装置系列的…

2023 年 Github 万圣节彩蛋

目录 2023 万圣节彩蛋2022 万圣节彩蛋2021 万圣节彩蛋2020 万圣节彩蛋 &#x1f383;&#x1f383;&#x1f383; 记录每年 Github 万圣节彩蛋&#xff0c;也记录有来项目成长历程。 Github 主页&#xff1a; https://github.com/haoxianrui 2023 万圣节彩蛋 2022 万圣节彩蛋 …

百元开放式耳机推荐哪款比较好、百元开放式耳机推荐

开放式耳机由于其不入耳的设计&#xff0c;佩戴时不会压迫耳腔&#xff0c;因此长时间佩戴时没有压力。加之因为开放式耳机的发声原理是通过空气传导的原理&#xff0c;音质会比较自然舒适&#xff0c;更加饱满&#xff0c;氛围感更强&#xff0c;会更符合我们正常人的听觉&…

飞致云开源社区月度动态报告(2023年10月)

自2023年6月起&#xff0c;中国领先的开源软件公司FIT2CLOUD飞致云以月度为单位发布《飞致云开源社区月度动态报告》&#xff0c;旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况&#xff0c;以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源大屏…

一文带你了解Java最基本的数据类型和变量

&#x1f388;个人主页&#xff1a;.满船清梦压星河_-CSDN博客 &#x1f302;c/java领域新星创作者 &#x1f389;欢迎&#x1f44d;点赞✍评论❤️收藏 &#x1f61b;&#x1f61b;&#x1f61b;希望我的文章能对你有所帮助&#xff0c;有不足的地方还请各位看官多多指教&…