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

news2024/11/17 22:21:13

目录

一、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格式的问题

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

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

相关文章

分销商城新零售商城门店商城小程序开发

用户注册:让用户用手机号或三方登录的方式轻松开启账号之旅。 商品探索:用户可以自由浏览琳琅满目的商品,还能通过关键词迅速锁定心仪之物。 商品分类与筛选:商品按类陈列,用户可根据价格、品牌等条件筛选&#xff…

【JS逆向学习】36kr登陆逆向案例(webpack)

在开始讲解实际案例之前,大家先了解下webpack的相关知识 WebPack打包 webpack是一个基于模块化的打包(构建)工具, 它把一切都视作模块 webpack数组形式,通过下标取值 !function(e) {var t {};// 加载器 所有的模块都是从这个…

《文科爱好者》是什么级别的期刊?是正规期刊吗?能评职称吗?

《文科爱好者》发展至今已有近四十年的历史。近四十年里无论最初由成都教育学院主办还是现在由成都大学主办,《爱好者》系列期刊一直坚持贴近学科教学实践,站在教育改革前沿,进行课程资源的深度开发,为基础教育课程改革提供全方位…

R 语言学习 case1:基础图形

step1: 安装缺失的库 install.packages("ggfun") install.packages("gcookbook")step2&#xff1a;导入库 library(ggplot2) library(ggfun) library(gcookbook)step3&#xff1a;使用数据 heightweight <- gcookbook::heightweight head(heightweig…

【好文翻译】JavaScript 中的 realm 是什么?

本文由体验技术团队黄琦同学翻译。 原文链接&#xff1a; https://weizmangal.com/2022/10/28/what-is-a-realm-in-js/ github仓库地址&#xff1a; https://github.com/weizman/weizman.github.io/blob/gh-pages/_posts/2020-02-02-what-is-a-realm-in-js.md 前言 作为我对…

NFT Insider #117:The Sandbox 与韩剧《还魂》合作推出人物化身

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members(https://twitter.com/WHALEMembers)、BeepCrypto&#xff08;https://twitter.com/beep_crypto&#xff09;联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周…

外贸建站服务器如何选?海洋建站主机推荐?

外贸建站用哪个服务器比较好&#xff1f;独立网站怎么选择主机&#xff1f; 随着全球化的趋势&#xff0c;外贸网站的建设越来越受到企业的重视。然而&#xff0c;要想让外贸网站稳定、安全、可靠地运行&#xff0c;选择合适的外贸建站服务器是关键。海洋建站将详细介绍如何选…

学习笔记-李沐动手学深度学习(一)(01-07)

个人随笔 第三列是 jupyter记事本 官方github上啥都有&#xff08;代码、jupyter记事本、胶片&#xff09; https://github.com/d2l-ai 多体会 【梯度指向的是值变化最大的方向】 符号 维度 &#xff08;弹幕说&#xff09;2&#xff0c;3&#xff0c;4越后面维度越低 4…

C语言——atoi函数解析

目录 前言 atoi函数的介绍 atoi函数的使用 atoi函数的模拟实现 前言 对于atoi函数大家可能会有些陌生&#xff0c;不过当你选择并阅读到这里时&#xff0c;请往下阅读&#xff0c;我相信你能对atoi函数熟悉该函数的头文件为<stdlib.h> 或 <cstdlib> atoi函数的…

【分布式技术】监控平台zabbix对接grafana,优化dashboard

目录 第一步&#xff1a;在zabbix server服务端安装grafana&#xff0c;并启动 第二步&#xff1a; 访问http://ip:3000/login 第三步&#xff1a;创建数据源 第四步&#xff1a;导入dashboard模板 ps&#xff1a;自定义创建新面板 第一步&#xff1a;在zabbix server服务…

C语言入门第一节-初识C语言

C语言入门第一节-初识C语言 视频教程&#xff1a;C语言教程&#xff08;全网最具有比喻形象的&#xff09;&#xff1a;持续更新ing_哔哩哔哩_bilibili 一.C语言的介绍 由C编写应用&#xff1a;Unix , Linux, MySQL都是由C編写C程序由各种令牌组成&#xff0c;令牌可以是关键宇…

P1059 [NOIP2006 普及组] 明明的随机数————C++

目录 [NOIP2006 普及组] 明明的随机数题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 解题思路Code运行结果 [NOIP2006 普及组] 明明的随机数 题目描述 明明想在学校中请一些同学一起做一项问卷调查&#xff0c;为了实验的客观性&#xff0c;他先用计算机生成了…

LabVIEW与微信开发数字液压缸测控系统

针对传统煤矿液压支架控制存在的精度和直线度问题&#xff0c;设计了一种数字液压缸测控系统&#xff0c;其核心是LabVIEW软件与微信小程序的结合&#xff0c;以及对应的精准硬件配置。该系统使用了NI CDAQ 9189数据采集控制器、脉冲输出模块和多种传感器&#xff08;MIK-P300压…

怎么提取伴奏?推荐4个好用软件

怎么提取伴奏&#xff1f;随着音乐在日常生活中的应用越来越广泛&#xff0c;人们对音乐的需求也日益增加。其中&#xff0c;伴奏作为音乐的重要组成部分&#xff0c;往往在创作、娱乐等方面起到关键作用。那么&#xff0c;如何从各种音乐资源中提取出伴奏呢&#xff1f;推荐使…

PyTorch 中的距离函数深度解析:掌握向量间的距离和相似度计算

目录 Pytorch中Distance functions详解 pairwise_distance 用途 用法 参数 数学理论公式 示例代码 cosine_similarity 用途 用法 参数 数学理论 示例代码 输出结果 pdist 用途 用法 参数 数学理论 示例代码 总结 Pytorch中Distance functions详解 pair…

N - Rightmost Digit

题目 Given a positive integer N, you should output the most right digit of N^N. 给定一个正整数 N&#xff0c;您应该输出 N^N 的最右边的数字。 Input The input contains several test cases. The first line of the input is a single integer T which is the number o…

看完这篇我就不信还有人不懂卷积神经网络!

看完这篇我就不信还有人不懂卷积神经网络&#xff01; 前言 在深度学习大&#x1f525;的当下&#xff0c;我知道介绍卷积神经网络的文章已经在全网泛滥&#xff0c;但我还是想要写出一点和别人不一样的东西&#xff0c;尽管要讲的知识翻来覆去还是那么一些&#xff0c;但我想…

寒假思维训练计划day11

每日一题&#xff0c;这两天有事&#xff0c;断更了一天&#xff0c;今天补上&#xff0c;感觉状态也不太好&#xff0c;来道1500的题压压惊。 宣传一下我总结的几个构造题模型&#xff0c;一点个人的浅薄见解&#xff1a; 1、前后缀贪心&#xff0c;比如说观察前后缀的sum&…

关于运维·关于Zabbix监控平台的面试点

目录 引言&#xff1a;明人不说暗话&#xff0c;今天分享几个在面试的时候常被问到关于Zabbix监控平台的面试点 1、zabbix的优点 2、zabbix的缺点 3、zabbix的监控模式 4、zabbix自定义监控怎么做 5、zabbix的自动发现功能 6、zabbix分布式监控有什么特点 引言&#xff1…

QtAV:基于Qt和FFmpeg的跨平台高性能音视频播放框架

目录 一.简介 1.特性 2.支持的平台 3.简单易用的接口 二.编译 1.下载依赖包 2.开始编译 2.1克隆 2.2修改配置文件 2.3编译 三.试用 一.简介 官网地址&#xff1a;http://www.qtav.org/ Github地址&#xff1a;https://github.com/wang-bin/QtAV 1.特性 ●支持大部分…