redis数据安全(二)数据持久化 RDB

目录

一、RDB快照持久化 原理

二、RDB快照持久化配置(redis.conf):

三、触发RDB备份:

1、自动备份,需配置备份规则:

2、手动执行命令备份(save | bgsave):

3、flushall命令:

四、RDB的备份恢复:

五、RDB优缺点:


以下配置以Redis-x64-3.2.100.zip为例,介绍下 RDB快照持久化 

一、RDB快照持久化 原理

1、单线程: Redis 是单线程程序,这个线程要同时负责多个客户端套接字的并发读写操作和内存数据结构的逻辑读写。在服务线上请求的同时,Redis 还需要进行内存快照,内存快照要求 Redis 必须进行文件 IO 操作,这意味着单线程同时在服务线上的请求还要进行文件 IO 操作,文件 IO 操作会严重拖垮服务器请求的性能。还有个重要的问题是为了不阻塞线上的业务,就需要边持久化边响应客户端请求。持久化的同时,内存数据结构还在改变,如果一个大型的 hash 字典正在持久化过程中,过来一个删除请求如何处理?Redis 使用操作系统的多进程 COW(Copy On Write) 机制来实现快照持久化。

2、fork(多进程):Redis 在持久化时会调用 glibc 的函数 fork 产生一个子进程,快照持久化完全交给子进程来处理,父进程继续处理客户端请求。子进程刚刚产生时,它和父进程共享内存里面的代码段和数据段。这是 Linux 操作系统的机制,为了节约内存资源,所以尽可能让它们共享起来。在进程分离的一瞬间,内存的增长几乎没有明显变化。

子进程做数据持久化,它不会修改现有的内存数据结构,它只是对数据结构进行遍历读取,然后序列化写到磁盘中。但是父进程不一样,它必须持续服务客户端请求,然后对内存数据结构进行不间断的修改。

这个时候就会使用操作系统的 COW 机制来进行数据段页面的分离。数据段是由很多操作系统的页面组合而成,当父进程对其中一个页面的数据进行修改时,会将被共享的页面复制一份分离出来,然后对这个复制的页面进行修改。这时子进程相应的页面是没有变化的,还是进程产生时那一瞬间的数据。

随着父进程修改操作的持续进行,越来越多的共享页面被分离出来,内存就会持续增长。但是也不会超过原有数据内存的 2 倍大小。另外一个 Redis 实例里冷数据占的比例往往是比较高的,所以很少会出现所有的页面都会被分离,被分离的往往只有其中一部分页面。子进程因为数据没有变化,它能看到的内存里的数据在进程产生的一瞬间就凝固了,再也不会改变,这也是为什么 Redis 的持久化叫「快照」的原因。接下来子进程就可以非常安心的遍历数据了进行序列化写磁盘了。

这里之需要需要通知父线程,是因为父线程要做个记录,保留最后一次持久化的时间。

二、RDB快照持久化配置(redis.conf):

1、指定备份文件的名称:在redis.conf中,可以修改rdb备份文件的名称,默认为dump.rdb。

2、指定备份文件存放的目录:

在redis.conf中,rdb文件的保存的目录是可以修改的,默认为Redis启动命令所在的目录

  

  

 3、stop-writes-on-bgsave-error:当磁盘满时,是否关闭redis的写操作,stop-writes-on-bgsave-error用来指定当redis无法写入磁盘的话,是否直接关掉redis的写操作,
推荐yes。默认配置如下:

4、rdb备份是否开启压缩:对于存储到磁盘中的rdb快照文件,可以设置是否进行压缩,如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能,推荐yes。

5、rdbchecksum:是否检查rdb备份文件的完整性。存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取最大的性能提升,可以关闭此功能。推荐yes。

三、触发RDB备份:

有几下几种方法

1、自动备份,需配置备份规则:

可在redis.conf中配置自动备份的规则,save用来配置备份的规则,save格式如下:

save 秒钟 写操作次数

如设置20秒内有最少有3次key发生变化则进行备份:save 20 3。 

默认规则为:默认是1分钟内修改了1万次,或5分钟内需修改了10次,或30分钟内修改了1次。

2、手动执行命令备份(save | bgsave):

有2个命令可以触发备份,

(1)save:save时只管保存,其他不管,全部阻塞,手动保存,不建议使用。

(2)bgsave:redis会在后台异步进行快照操作,快照同时还可以响应客户端情况。

可以通过 lastsave 命令获取最后一次成功生成快照的时间(获取到的是时间戳)。

动态停止RDB: redis-cli config set save "" #save后给空值,表示禁用保存策略。

3、flushall命令:

执行flushall命令,也会产生dump.rdb文件,但里面是空的,无意义。

四、RDB的备份恢复步骤:

1、先通过CONFIG GET dir查询rdb文件的目录,这其实就是查的redis.conf文件当中通过dir设置的目录

2、停止Redis
3、拷贝迁移的redis备份文件(dump.rdb)到CONFIG GET dir查询出来的指定目录下。

cp dump.rdb dump.rdb

4、重新启动redis服务

五、RDB优缺点:

1、优点:

(1)适合大规模数据恢复

(2)对数据完整性和一致性要求不高更适合使用

(3)节省磁盘空间

(4)RDB是一个紧凑压缩的二进制文件,Redis加载RDB恢复数据远远快于AOF的方式

2、缺点:

(1)Fork的时候,内存中的数据会被克隆一份,大致2倍的膨胀,需要考虑

(2)虽然Redis在fork的时候使用了写时拷贝技术,但是如果数据庞大时还是比较消耗性能

(3)RDB方式数据没办法做到实时持久化/秒级持久化在备份周期在一定间隔时间做一次备份,所以如果Redis意外down的话,就会丢失最后一次快照后所有修改

(4)RDB文件使用特定二进制格式保存,Redis版本演进过程中有多个格式的RDB版本,存在老版本Redis服务无法兼容新版RDB格式的问题

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

排序:非递归的归并排序

目录 递归与非递归的思想对比: 递归: 非递归: 代码解析: 完整代码: 递归与非递归的思想对比: 递归: 在之前的归并排序,它的核心思想是通过不断的分割,从一个数组变…

JAVA实现向Word模板中插入Base64图片和数据信息

目录 需求一、准备模板文件二、引入Poi-tl、Apache POI依赖三、创建实体类(用于保存向Word中写入的数据)四、实现Service接口五、Controller层实现 需求 在服务端提前准备好Word模板文件,并在用户请求接口时服务端动态获取图片。数据等信息插…

数据结构图算法

算法就要多练,我在国庆节放假的时间编写了图的算法题,写完让我受益匪浅,希望可以帮助到大家. 文章目录 前言 一、图的数据结构 1.图的邻接表数据结构定义 2.图的邻接矩阵的存储形式 二、邻接表建立图代码 三、邻接表删除边(基本操作考试不考) 四、邻接表删除顶点及销毁整…

【LLM】Prompt微调

Prompt 在机器学习中,Prompt通常指的是一种生成模型的输入方式。生成模型可以接收一个Prompt作为输入,并生成与该输入相对应的输出。Prompt可以是一段文本、一个问题或者一个片段,用于指导生成模型生成相应的响应、续写文本等。 Prompt优化…

.pings勒索病毒的无声侵袭:保护你的数据财产免受.pings的侵害

尊敬的读者: 在数字时代,网络犯罪者不断推陈出新,而.pings勒索病毒则是一种极富威胁的加密型恶意软件。本文将深入探讨.pings勒索病毒的攻击方式,为您提供从数据恢复到全面预防的完整指南,帮助您有效对抗这一威胁。如…

安全帽识别:智能监控新趋势

在现代工业安全领域,安全帽识别技术已成为一项关键的创新。这项技术通过智能监控系统确保工作人员在危险环境中佩戴安全帽,显著提升了工作场所的安全标准。本文将探讨这一技术的工作原理、应用前景及其在现代工业中的重要性。 安全帽识别的工作机制 安全…

【漏洞攻击之文件上传条件竞争】

漏洞攻击之文件上传条件竞争 wzsc_文件上传漏洞现象与分析思路编写攻击脚本和重放措施中国蚁剑拿flag wzsc_文件上传 漏洞现象与分析 只有一个upload前端标签元素,并且上传任意文件都会跳转到upload.php页面,判定是一个apache容器,开始扫描…

什么是车载信息娱乐系统和集成驾驶舱

什么是车载信息娱乐系统(IVI)? “车载信息娱乐(IVI)”通过向驾驶员和乘客提供信息和娱乐,为驾驶提供便利和舒适。为了理解这个概念,有必要知道“信息娱乐”的含义。“信息娱乐”是这个市场中使用的一个词,它结合了“信息”和“娱乐”两个词…

「达摩院MindOpt」优化形状切割问题(MILP)

1. 形状切割问题 在制造业,高效地利用材料不仅是节约成本的重要环节,也是可持续发展的关键因素。无论是在金属加工、家具制造还是纺织品生产中,原材料的有效利用都直接影响了整体效率和环境影响。 形状切割问题(Shape Cutting o…

区域入侵检测AI边缘计算智能分析网关V4如何通过ssh进行服务器远程运维

智能分析网关V4是一款高性能、低功耗的AI边缘计算硬件设备,它采用了BM1684芯片,集成高性能8核ARM A53,主频高达2.3GHz,并且INT8峰值算力高达17.6Tops,FB32高精度算力达到2.2T,每个摄像头可同时配置3种算法&…

万户 ezOFFICE wf_printnum.jsp SQL注入漏洞复现

0x01 产品简介 万户OA ezoffice是万户网络协同办公产品多年来一直将主要精力致力于中高端市场的一款OA协同办公软件产品,统一的基础管理平台,实现用户数据统一管理、权限统一分配、身份统一认证。统一规划门户网站群和协同办公平台,将外网信息维护、客户服务、互动交流和日…

VUE--插槽slot(将父级的模块片段插入到子级中)

组件可以接收任意类型的JS值作为props,但我们想要为子组件传递一些模板片段,并在子组件中进行渲染时,此时可以采用插槽slot来实现 简单来说,插槽时组件内留一个或多个插槽的位置,供组件传递对应的模板代码(…

深入解析与实践:Ajax异步请求在Web开发中的应用指南

一、概述 1、定义 ​ Ajax(Asynchronous JavaScript and XML)异步请求是现代Web开发中不可或缺的技术组件,它允许网页在不刷新整个页面的情况下从服务器获取并更新数据,从而实现动态、流畅的交互体验。 2、异步和同步 浏览器访…

目标文献分析方法

如何正确选题? 不仅仅是题目,而是研究工作的起步选题步骤? 发现问题选择方向调查研究分析论证确定选题 中国知网 深度学习方向词 1检索:深度学习 医疗影像 1 发表时间要最新 2 显示50个,全选 3 导出文献格式Ref 4 导…

无法打开浏览器开发者工具的可能解决方法

网页地址: https://jx.xyflv.cc/?url视频地址url 我在抖音里面抓了一个视频地址, 获取到响应的json数据, 找到里面的视频地址信息 这个网站很好用: https://www.jsont.run/ 可以使用js语法对json对象操作, 找到所有视频的url地址 打开网页: https://jx.xyflv.cc/?urlhttps:…

最推荐的视频播放器——PotPlayer

PotPlayer,是The KMPlayer的原作者姜勇囍进入Daum公司后的新一代作品,目前仍有更新。由于采用Delphi编译程式的KMPlayer有一些弊端,姜勇囍为改进播放器本身的一些效能而重新用VC进行构架。 除了支持3D视频外,PotPlayer还覆盖支持…

MetaGPT-打卡-day2,MetaGPT框架组件学习

文章目录 Agent组件实现一个单动作的Agent实现一个多动作的Agent技术文档生成助手其他尝试 今天是第二天的打卡~昨天是关于一些概念的大杂烩,今天的话,就来到了Hello World环节。 从单个Agnet到多个Agent,再到组合更复杂的工作流来解决问题。…

分类预测 | Matlab实现CS-SVM布谷鸟算法优化支持向量机的数据分类预测

分类预测 | Matlab实现CS-SVM布谷鸟算法优化支持向量机的数据分类预测 目录 分类预测 | Matlab实现CS-SVM布谷鸟算法优化支持向量机的数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现CS-SVM布谷鸟算法优化支持向量机的数据分类预测。 2.自带数据…

均线和布林线这样的关系,WeTrade众汇实例这样使用

在后台经常有交易者咨询:“我可以用加权平均线或指数代替移动平均线吗?”理论上,任何平均值都适合绘制BB。在回答这个问题之前,为了稳妥起见,WeTrade众汇通过对各种均线对比分析,却得出这样结论:经典均线是构建参考点最简单、最准…

element-plus表格判断table中的数据是否换行展示,如果换行展示,替换为....

文章目录 需求分析 需求 element-plus表格判断table中的数据是否换行展示&#xff0c;如果换行展示&#xff0c;替换为… 分析 <style lang"less" scoped>::v-deep(.el-table .cell) {overflow: hidden; // 溢出隐藏text-overflow: ellipsis; // 溢出用省略号…