RDB是什么?·

目录

一、RDB是什么?

二、 RDB触发机制

2.1 手动触发

2.2 自动触发

2.3 RDB执行流程

三、RDB的文件处理

四、RDB的优缺点


一、RDB是什么?

RDB是Redis DataBase,是Redis实现数据持久化的一种方式。因为Redis的数据是存储在内存中的,所以就会有数据丢失的风险,那么为了解决这样的问题,Redis采取将数据写入硬盘中进行持久化的保存。

二、 RDB触发机制

RDB进行持久化是将当前进程的数据生成快照保存到硬盘中的过程,触发RDB持久化的过程也分为手动触发和自动触发

2.1 手动触发

这里手动使用两个命令就可以触发RDB的持久化

  • save命令

        阻塞当前的Redis,只到RDB过程完成为止,但是这个命令对于会将对内存造成很大的开销,基本不采用

  • bgsave命令(background save后台保存)

        Redis执行fork操作创建出子线程,RDB的过程全部由子线程负责,完成后自动结束。阻塞只发生在fork阶段,时间很短(Redis内部的RDB操作都是采取类似bgsave的方式)

2.2 自动触发

除了手动触发的机制,Redis还提供了自动触发RDB的机制,同时这个机制也是实战中运用较多的(毕竟不能总是手动输入命令),自动触发也提供了3种方式

  •  使用save配置。如“save m n”表示在m秒修改了n次,自动RDB持久化,查看Redis的配置文件,我们可以发现默认的有900秒后修改了1次自动执行....这个并不是固定的,是可以手动修改的

        

  • 从节点进⾏全量复制操作时,主节点⾃动进⾏ RDB 持久化,随后将 RDB⽂件内容发送给从结点。
  • 使用shutdown命令关闭Redis时,自动RDB持久化

2.3 RDB执行流程

RDB手动执行和自动执行流程是一样的,这里以手动bgsave命令来演示

  1. 当执行basave命令的时候,首先会判断是否存在该命令相同的进程,如果有与该命令相同的进程就直接返回
  2. 没有正在执行的类似进程,父进程就会阻塞等待(很快单位以微秒记)执行fork,创建出子进程
  3. 当子进程创建完成之后,bgsave命令返回“Background saving started”信息通知父进程不再阻塞等待,使得父进程可以继续响应其他命令
  4. 子进程创建RDB文件,根据父进程内存中生成的快照文件,将原有文件进行原子替换,进而生成持久化的数据文件
  5. 子进程发送信号通知父进程已经完成,父进程更新统计信息

三、RDB的文件处理

打开redis的配置文件,发现rdb的默认文件是dump.rdb(这里可以修改),文件的存储路径是我已经修改过了的,是rdb文件的默认存储路径

Redis默认采⽤ LZF 算法对⽣成的 RDB ⽂件做压缩处理,压缩后的⽂件远远⼩于内存⼤⼩,默认开启,可以 将rdbcompression {yes|no} 动态修改(这里建议修改成yes,可以大幅度降低文件内存)

如果Redis在启动的过程中加载到损坏的RDB文件会拒绝启动。这里可以使用Redis提供的redis-check-dump工具检测RDB文件并获取相应的错误报告

四、RDB的优缺点

  • RDB是一个紧凑压缩的二进制文件,代表 Redis 在某个时间点上的数据快照。⾮常适⽤于备份,全量复制等场景。⽐如每 6 ⼩时执⾏ bgsave 备份,并把 RDB ⽂件复制到远程机器或者⽂件系统中(如hdfs)⽤于灾备
  • Redis加载RDB文件的速度远远快于AOF的方式
  • RDB⽅式数据没办法做到 实时持久化 / 秒级持久化。因为 bgsave 每次运⾏都要执⾏fork创建⼦进程,属于重量级操作,频繁执⾏成本过⾼(由于不是实时备份,这里就会有内存数据丢失的风险。aof能够有效的解决这个问题)
  • RDB⽂件使⽤特定⼆进制格式保存,Redis版本演进过程中有多个 RDB 版本,兼容性可能有⻛险

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

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

相关文章

Misc | bucket 第二届“奇安信”杯网络安全技能竞赛

题目描述: 解密Base全家桶。 密文: 下载附件,解压得到一个txt文本,打开如下。 3441344134363435344435323442344534423441343635353334353333323442343935413442353434393535354135333441344534353536353535333332353534413436…

Karmada更高效地实现故障转移

随着云原生技术的发展,其应用场景不断扩大。越来越多的企业开始将应用程序部署在 Kubernetes 集群中,随着 Kubernetes 集群规模的不断扩大,也带来了许多管理挑战,例如多集群间负载均衡、资源调度、故障转移等问题。为了解决这些问…

redis一条set命令的执行过程

set命令,在我们看来很简单,set zhangsan lisi,redis给我们返回一个 ok,就完事了。那redis的服务端是怎么处理这条简单的命令的?是不是像我们看起来的这么简单。今天这篇文章就来聊聊这个问题。 在上一篇文章中,我们聊…

超详细的Jmeter随机参数各种搭配

前言 参数配置应该有三种场景,具体其他的我还没想到,那到底是哪三种呢?如果你也对这个问题感兴趣的话,那就让我们一起往下看吧! 一、两个固定值之间随机生成一个值,应用场景没有限制 1、最简单的两个值之…

【Pytorch笔记】7.torch.nn (Convolution Layers)

我们常用torch.nn来封装网络,torch.nn为我们封装好了很多神经网络中不同的层,如卷积层、池化层、归一化层等。我们会把这些层像是串成一个牛肉串一样串起来,形成网络。 先从最简单的,都有哪些层开始学起。 Convolution Layers -…

Windows内的Ubuntu虚拟机安装docker

博主使用源码安装时遇到了很多奇葩情况,不知道是不是稀奇古怪的东西安装太多了导致的,下面是一个探索出来的可行又简单的路子: 流程 curl -fsSL https://test.docker.com -o install_docker.sh sudo sh install_docker.sh等待一阵子&#x…

使用新版Visual Studio编译老项目部分报错处理

“/ZI”和“/Gy-”命令行选项不兼容 进入“项目”—>“属性”—>“C/C” (1) —>“常规”—>“调试信息格式”—>选择“程序数据库(/Zi)”或“无” (2) —>“代码生成”—>“启用函数集链接”—>选择“是 (/Gy)” 使用zlib库 报错 error LNK2019: 无…

使用 Stable Diffusion Img2Img 生成、放大、模糊和增强

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D数字孪生场景编辑器 Stable Diffusion 2022.1 Img5Img 于 2 年发布,是一款革命性的深度学习模型,正在重新定义和推动照片级真实…

Ubuntu18.04编译OpenCV时遇到无法下载ADE的问题

安装OpenCV过程中编译时出现下载ADE失败的问题 报错如下: -- ADE: Downloading v0.1.2a.zip from https://github.com/opencv/ade/archive/v0.1.2a.zip -- Try 1 failed CMake Warning at cmake/OpenCVDownload.cmake:248 (message):ADE: Download failed: 28;&quo…

分布式锁的概念、应用场景、实现方式和优缺点对比

一:什么是分布式锁 分布式锁是一种用于协调分布式系统中多个节点对共享资源的访问的机制。在分布式系统中,由于多个节点的并发执行,可能会导致对共享资源的竞争,而分布式锁的目的就是确保在任何时刻,只有一个节点能够持…

小米手机获取电池健康度

目录 方法一:使用Bug反馈功能 1. 打开拨号界面,输入*#*#284#*#* 2. 导出结果,等待即可 3. 找到这个压缩文件 4. 解压缩【我这里直接拷贝到电脑中操作,手机同理】 4.1 解压: 4.2 将得到的新的压缩文档解压 5. 打…

mysql 添加limit,sql 语句执行时间变长的问题

调优一个sql语句,在语句如下 select resources_id,title,file_type,period,subject_id,subject_name from cms_resources where status2 and period"2" and subject_id6 and FIND_IN_SET("114",category_id…

安防监控EasyCVR视频汇聚平台使用海康SDK播放出现花屏是什么原因?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、…

【go/方法记录】局部坐标与世界坐标间的相互转换(位置/方向)

文章目录 说在前面计算旋转矩阵计算变换矩阵Inverse QuaternionEuler To QuaternionWorld to LocalPositionRotation Local to WorldPositionRotation 参考 说在前面 golang版本: go1.20.5 windows/386gonum版本:gonum.org/v1/gonum v0.14.0 计算旋转矩阵…

hutool SM2(秘钥对、签名、验签、加密、解密)

//生成公钥对KeyPair pair SecureUtil.generateKeyPair("SM2");//私钥String privateKeyStr Base64.getEncoder().encodeToString(pair.getPrivate().getEncoded());//公钥String publicKeyStr Base64.getEncoder().encodeToString(pair.getPublic().getEncoded())…

F.binary_cross_entropy、nn.BCELoss、nn.BCEWithLogitsLoss与F.kl_div函数详细解读

提示:有关loss损失函数详细解读,并附源码!!! 文章目录 前言一、F.binary_cross_entropy()函数解读1.函数表达2.函数运用 二、nn.BCELoss()函数解读1.函数表达2.函数运用 三、nn.BCEWithLogitsLoss()函数解读1.函数表达…

Vue dev-tools的安装

安装 Vue 开发者工具,装插件调试Vue应用 1.通过谷歌应用商店来进行安装(国外网站) 2.极简插件: 搜索 Vue -> 下载解压 -> 浏览器扩展模式打开,开发者模式 -> 将解压的CRX文件拖拽安装 -> 插件详情 &…

vscode Prettier配置

常用配置项: .prettierrc.json 是 Prettier 格式化工具的配置文件 {"printWidth": 200, // 指定行的最大长度"tabWidth": 2, // 指定缩进的空格数"useTabs": false, // 是否使用制表符进行缩进,默认为 false"singl…

华为Matebook X Pro 2022款 i7 集显(MRG-W76)原装出厂Windows11预装系统21H2

下载链接:https://pan.baidu.com/s/12ru9lUeQ7mWd5u1KLCM0Pg?pwdc7pi 提取码:c7pi 原厂系统自带指纹、面部识别、声卡、网卡、显卡等所有驱动、出厂主题壁纸、Office办公软件、华为电脑管家等预装程序,如图 由于时间关系,绝大部分资料没…

照亮夜晚的台灯:户外空间的闪亮之选

户外台灯是家庭和社交空间的重要元素,它们不仅提供照明,还可以为您的户外区域增添美感,以及创造一个温馨的社交氛围。以下是一些关于户外台灯的信息,以帮助您更好地了解它们的多功能性和用途。 1、照明的重要性:户外台…