Redis 持久化机制

client Redis[内存] --> 内存数据、磁盘数据----> 磁盘,Redis官方提供了两种不同的持久化方案将内存中的数据存储在硬盘中:

快照(Snapshot)

AOF只追加日志文件。

1、快照(Snapshot)
1、快照的特点:

快照的方式是将某一时刻的数据全部写入到磁盘中,也是Redus中默认的开启持久化的方式。保存的文件是以.rdb结尾的文件。

需要注意的是:redis在哪个目录下启动,哪一个就是redis的工作目录,后面的rdb持久化或者AOF持久化,产生的文件都存在于redis的当前工作目录下。在哪里启动就会读取哪里的快照文件

2、快照的生成的方式:
1、客户端的方式:通过bigsave、save指令

1、bigsave指令

当主进程接收到客户端的写命令的请求,主进程会调用fork函数来创建一个子进程,子进程负责进行快照,并将快照写入到磁盘中。此时的父类会继续的接受客户端的写数据的请求。

2、save指令

当主进程接收到客户端的写数据的请求,主进程会调用fork函数来创建一个子进程来进行快照并将数据存入磁盘中,此时子进程会拒绝外界客户端写数据的请求一直到子进程结束。

fork :当一个进程创建子线程的时候,底层的操作系统会创建进程的一个副本,在类似于unix系统中创建子线程的操作会进行优化,在刚开始的时候,父子进程共享相同的内存,知道父类进程或者子类进程对内存进行了写之后,对被写入的内存的共享才会结束服务
2、配置器配置自动触发

1、修改配置文件redis.conf文件,用户在redis.conf配置文件中设置了save配置选项,redis会在save选项条件满足之后自动的触发一次bgsave命令,如果设置多个save配置选项,当任意一个save配置文件条件满足,redis也会触发一次bgsave命令

 3、服务器接收客户端shutdown指令

当redis通过shutdown指令接收到关闭服务器的请求时,会执行一个save命令,阻塞所有的客户端,不再执行客户端执行发送的任何命令,并且在save命令执行完毕之后关闭服务器。

修改快照的位置和名称:   redis.conf 配置文件中:#1.修改生成快照名称
- dbfilename dump.rdb# 2.修改生成位置
- dir ./
2、AOF只追加日志文件
1、特点:

将客户端的所有的写的命令都记录在日志文件中,AOF持久化会将被执行的写命令写到AOF的文件中。以此来记录数据发生的变化。因此只要Redis从头执行一下这个日志文件就可以恢复到原先的数据集。

2、开启AOF:

在redis中是默认不开启AOF持久化的,需要在配置文件中开启:

1、开启AOF持久化:修改 appendonly  yes 
修改 appendfilename "appendonly.aof" 指定生成文件名称

3、日志追加的频率:
# 1.always 【谨慎使用】
- 说明: 每个redis写命令都要同步写入硬盘,严重降低redis速度
- 解释: 如果用户使用了always选项,那么每个redis写命令都会被写入硬盘,从而将发生系统崩溃时出现的数据丢失减到最少;遗憾的是,因为这种同步策略需要对硬盘进行大量的写入操作,所以redis处理命令的速度会受到硬盘性能的限制;
- 注意: 转盘式硬盘在这种频率下200左右个命令/s ; 固态硬盘(SSD) 几百万个命令/s;
- 警告: 使用SSD用户请谨慎使用always选项,这种模式不断写入少量数据的做法有可能会引发严重的`写入放大`问题,导致将固态硬盘的寿命从原来的几年降低为几个月。# 2.everysec 【推荐默认】
- 说明: 每秒执行一次同步显式的将多个写命令同步到磁盘
- 解释: 为了兼顾数据安全和写入性能,用户可以考虑使用everysec选项,让redis每秒一次的频率对AOF文件进行同步;redis每秒同步一次AOF文件时性能和不使用任何持久化特性时的性能相差无几,而通过每秒同步一次AOF文件,redis可以保证,即使系统崩溃,用户最多丢失一秒之内产生的数据。 # 3.no	【不推荐】
- 说明: 由操作系统决定何时同步 
- 解释:最后使用no选项,将完全由操作系统决定什么时候同步AOF日志文件,这个选项不会对redis性能带来影响但是系统崩溃时,会丢失不定数量的数据,甚至丢失全部数据,另外如果用户硬盘处理写入操作不够快的话,当缓冲区被等待写入硬盘数据填满时,redis会处于阻塞状态,并导致redis的处理命令请求的速度变慢。
4、修改同步的频率:
# 1.修改日志同步频率
- 修改appendfsync everysec|always|no 指定

3、AOF重写:
1、AOF带来的问题:

AOF会将所有写数据的命令都写入到日志文件中,假设连续的一百次操作都是相同,此时AOF会记录这一百次的记录,就会导致文件过大,因为要恢复数据库的状态其实文件中保存一条数据就够了,为了压缩aof的持久化文件Redis提供了AOF重写(ReWriter)机制。

2、AOF重写:

在一定的程度上可以减少AOF文件的体积,并且能够保证数据不丢失。

3、AOF触发的方式:
1、客户端触发的方式:
bgrewriteaof
2、服务器配置方式自动的触发:
- 配置redis.conf中的auto-aof-rewrite-percentage选项 
- 如果设置auto-aof-rewrite-percentage值为100和auto-aof-rewrite-min-size 64mb,
并且启用的AOF持久化时,那么当AOF文件体积大于64M,并且AOF文件的体积比上一次重写之后体积大了至少一倍(100%)时,会自动触发,
如果重写过于频繁,用户可以考虑将auto-aof-rewrite-percentage设置为更大
4、AOF的重写机制的原理
1、7.0.0版本之前:

1、首先,当主进程触发AOF重写机制的时候,主进程会调用fork函数创建一个子进程进行快照,并将生成的dump文件用指令的方式写入临时文件中,子进程会将完成写入临时文件通知给主进程。

2、此时主进程还会继续接受客户端的写数据的命令,主进程会继续向原先的aof文件中记录命令,同时也会将命令缓存到内存中,当主进程接受到子进程写入完成这个命令的时候,会将缓存在内存中的写数据指令同步到临时文件中。

3、当内存中的指令写入后,临时文件就会替换掉原先的aof文件。

2、7.0.0版本之后:

1、首先,当主进程触发AOF重写机制的时候,主进程会调用fork函数创建一个子进程进行快照,并将生成的dump文件用指令的方式写入临时文件中,和原先快照文件一起以命令的方式写入到临时文件中。

2、此时主进程还会继续接收客户端的写数据的命令,此时将命令写入新的增量文件中,同时也会将命令写入到就的增量文件中(aof文件)。

3、然后将旧的增量文件和临时文件合并生成一个临时清单

4、底层通过读取这个临时清单去重写生成一个新的rdb文件去替换原先旧的基本文件。

与之前的最大的改变就是将原先的单个AOF文件拆分成一个基本文件和多个增来文件,基本文件负责的是重写AOF之前已经存在的数据和一些快照的数据。增量文件负责的是一些增量的修改。都会存在在一个单独的文件中,并由清单文件所管理。

5、总结:

两种持久化方案既可以同时使用(aof),又可以单独使用,在某种情况下也可以都不使用,具体使用那种持久化方案取决于用户的数据和应用决定。

无论使用AOF还是快照机制持久化,将数据持久化到硬盘都是有必要的,除了持久化外,用户还应该对持久化的文件进行备份(最好备份在多个不同地方)。

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

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

相关文章

如何用CHAT解释文章含义?

问CHAT:解释“ 本身乐善好施,令名远近共钦,待等二十左右,定有高亲可攀;而且四德俱备,帮夫之缘亦有。主持家事不紊,上下亦无闲言。但四十交进,家内谨防口舌,须安家堂&…

分布式篇---第一篇

系列文章目录 文章目录 系列文章目录前言一、分布式幂等性如何设计?二、简单一次完整的 HTTP 请求所经历的步骤?三、说说你对分布式事务的了解前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,…

非遗之光:十八数藏柏松数字保护的璀璨之路

随着数字技术的崛起,非物质文化遗产的保护进入了一个新的纪元。在这个时代的先锋中,十八数藏以其对传统工艺的数字保护而独领风骚。这是一条璀璨之路,通过数字技术的应用,为传统工艺注入了新的活力。 十八数藏柏松将数字创新融入传…

软件包管理器yum和git

目录 一、Linux软件包管理器yum 1、Linux下的软件安装方法 2、了解yum 1、实际例子引入 2、yum 3、查找软件包 4、安装软件包 5、卸载软件 二、git 一、Linux软件包管理器yum 1、Linux下的软件安装方法 1、在Linux下安装软件,一个通常的办法是下载到程序的源…

经典百搭女童加绒卫衣,看的见的时尚

经典版型套头卫衣 宽松百搭不挑人穿 单穿内搭都可以 胸口处有精美的小熊印花 面料是复合柔软奥利绒 暖和又不显臃肿哦!!

Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署

JenkinsMavenGitlabTomcat 自动化构建打包、部署 1、环境需求 本帖针对的是Linux环境,Windows或其他系统也可借鉴。具体只讲述Jenkins配置以及整个流程的实现。 1.JDK(或JRE)及Java环境变量配置,我用的是JDK1.8.0_144&#xff0…

排序算法--快速排序

实现逻辑 ① 从数列中挑出一个元素,称为 “基准”(pivot), ② 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这…

2023年度openGauss标杆应用实践案例征集

标杆应用实践案例征集 2023 openGauss 数据库作为企业IT系统的核心组成部分,是数字基础设施建设的关键,是实现数据安全稳定的保障。openGauss顺应开源发展趋势,强化核心技术突破,着力打造自主根社区,携手产业伙伴共同…

【开源】基于JAVA的高校实验室管理系统

项目编号: S 015 ,文末获取源码。 \color{red}{项目编号:S015,文末获取源码。} 项目编号:S015,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实…

PTA-用天平找小球

三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。要求找出这个不一样的球。 输入格式: 输入在一行中给出3个正整数,顺序对应球A、B、C的重量。 输出格式: 在一行中输出唯一的那个不一样的球。 输入样例&#xff…

内衣洗衣机哪些品牌质量好实惠?小型洗衣机全自动

现在洗内衣内裤也是一件较麻烦的事情了,在清洗过程中还要用热水杀菌,还要确保洗衣液是否有冲洗干净,还要防止细菌的滋生等等,所以入手一款小型的烘洗全套的内衣洗衣机是非常有必要的,专门的内衣洗衣机可以最大程度减少…

重磅!2023年两院院士增选名单公布

中国科学院 关于公布2023年中国科学院院士增选当选院士名单的公告 根据《中国科学院院士章程》《中国科学院院士增选工作实施办法(试行)》等规定,2023年中国科学院选举产生了59名中国科学院院士。 现予公布。 中国科学院 2023年11月22日…

设计模式——结构型模式

结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。 由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更…

机器学习算法(1)——简单线性回归

一、说明 在在这篇文章中,我们将学习我们的第一个机器学习算法,称为简单线性回归。这是一个重要的算法,因为当您可能正在学习第一个神经网络(称为人工神经网络)时,在此算法中学习的技术也适用于深度学习。我…

毕业设计ASP.NET 1400动漫公司网站【程序源码+文档+调试运行】

摘要 本系统将实现一个动漫公司网站,包括前台用户模块和后台管理员模块。前台用户模块主要包括最新动漫、注册登录、公司简介、公司新闻、动漫中心、联系我们和会员中心等功能。后台管理员模块包括用户管理、公司简介管理、公司新闻管理、动漫类别管理、动漫管理、…

加工车间污水处理设备有哪些

在加工车间中,污水处理设备是至关重要的一部分。它们的功能是将污水进行处理,确保其达到符合环保标准的水质要求。以下是一些常见的加工车间污水处理设备: 1.初级沉淀池:初级沉淀池是最基本的污水处理设备之一。它通过重力作用将…

阿里云服务器ECS产品知识及购买和使用常见问题及答案汇总

本文总结了阿里云用户在购买和使用阿里云服务器中的一些常见的问题,包括什么是云服务器ECS,特性与优势,应用场景,基本概念,使用限制等众多问题,让您全方位了解阿里云服务器,并根据自己的需求选择…

百战python01-初识python_turtle绘图

文章目录 简介练习1.简易的进度条学习使用turtle在屏幕上绘制图形注:需要对python有基本了解,可查看本作者python基础专栏,有任何问题欢迎私信或评论(本专栏每章内容都将不定期进行内容扩充与更新) 简介 python简介及方向+pycharm安装使用请转 练习 注:尝试练习。了解…

常见树种(贵州省):010任豆、漆树、椿树、伯乐树、栾树、楸树、橡胶树、盐肤木、吴茱萸、黄柏

摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、任豆 …

趋势解读:TikTok独创的社交语言是如何演变的

在数字时代的浪潮中,社交媒体平台成为人们传递信息、表达创意和建立社交联系的重要场所。而在这众多社交平台中,TikTok以其独特的社交语言和创新的内容形式,迅速吸引了全球数以亿计的用户。本文将深入探讨TikTok的社交语言是如何独创并演变的…