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 版本,兼容性可能有⻛险

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

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

相关文章

Leetcode2760. 最长奇偶子数组

Every day a Leetcode 题目来源&#xff1a;2760. 最长奇偶子数组 解法1&#xff1a;模拟 代码&#xff1a; class Solution { public:int longestAlternatingSubarray(vector<int> &nums, int threshold){int n nums.size();int ans 0;for (int i 0; i <…

centos7升级python2到python3.6.8使用yum安装问题

背景 公司爬虫需要使用python3.6.8版本&#xff0c;因此升级centos的python2到python3.6.8。但是当使用yum安装包时 &#xff0c;出现如下异常&#xff1a; [rootlocalhost bin]# yum install npm -y Loaded plugins: fastestmirror, product-id, search-disabled-repos, sub…

短视频ai剪辑分发账号矩阵系统(招商oem)----源头技术开发

短视频ai剪辑分发账号矩阵系统 1. 视频剪辑工具——原创短视频一键生成&#xff0c;视频剪辑亮点分析 &#xff08;1&#xff09;多模式智能剪辑 包含智能混剪逻辑、智能组合、场景顺序、图片生成视频等多种模式。在视频创作上也做了简化&#xff0c;即使是没有剪辑能力的创…

node 第十八天 中间件express-session实现会话密钥

express-session 文档 express-session 一个简单的express会话中间件 使用场景 在一个系统中&#xff0c; 需要维持一个临时的与登录态无关的会话密钥 比如登录系统后&#xff0c; 请求某一个接口&#xff0c; 接口的行为与登录态无关&#xff0c; 也就是说任何人对接口的访问…

3.5 Linux 用户管理

1、账号 & 组账号 inux基于用户身份对资源访问进行控制&#xff0c;Linux 属于多用户的操作系统 a. Linux 用户 按建立方式分类&#xff1a; 内建账户: 由系统或程序自行建立的账户自定义账户: 管理员或特权人员手工建立 按权限分类&#xff1a; 特权账户: 有对系统或…

【proverif】proverif的语法-解决中间人攻击-代码详解

系列文章目录 【proverif】proverif的下载安装和初使用【proverif】proverif的语法&#xff08;本文&#xff09; 文章目录 系列文章目录前言&#xff1a;proverif-密码学领域中的客观第三方评价工具一、从官网学正规语法二、细看用户手册1. 声明形式的加密原语2. 握手协议-中…

【10套模拟】【5】

关键字&#xff1a; 数据的最小单位、归并排序&#xff08;两两归并&#xff09;、单链表顺序存取、邻接表表头顶点顺序存储随机访问、三角矩阵元素个数、堆的性质、冒泡排序、二叉树是否相同

MATLAB与Excel的数据交互

准备阶段 clear all % 添加Excel函数 try Excel=actxGetRunningServer(Excel.Application); catch Excel=actxserver(Excel.application); end % 设置Excel可见 Excel.visible=1; 插入数据 % % 激活eSheet1 % eSheet1.Activate; % 或者 % Activate(eSheet1); % % 打开…

疑似openAI的BUG

Chat gpt 4.0 『最新数据2023年』 Chat gpt 3.5 智商不在线『最近数据2021年9月左右』 发现了疑似openAI的一个bug 通过固定连接访问就可以用chatgpt4.0 4.0版本的费用为20美金一个月 https://chat.openai.com/?modelgpt-4-gizmo

Angular 由一个bug说起之二:trackBy的一点注意事项

trackBy是angualr优化项目性能的一种方法, 通过返回一个具有绑定性的唯一值, 比如id&#xff0c;手机号&#xff0c;身份证号之类的&#xff0c;来让angular能够跟踪数组的项目&#xff0c;根据数据的变化来重新生成DOM, 这样就节约了性能。 但是如果是使用ngFor循环组件&…

制造企业MES管理系统解决方案的深化应用

随着制造业的发展&#xff0c;生产车间管理一直是企业面临的难题。生产过程繁忙而混乱&#xff0c;信息不流通&#xff0c;生产效率低下等问题频发。为了解决这些问题&#xff0c;企业管理者急需寻找有效的解决方案。这时&#xff0c;MES管理系统解决方案应运而生&#xff0c;成…

Linux网络之传输层协议tcp/udp

文章目录 目录 一、再谈端口号 1.端口号划分 2.知名端口号 3.netstat&#xff0c;pidof 二、UDP协议 1.udp协议格式 2.udp特点 3.基于udp的应用层协议 三、TCP协议 1.tcp报头 确认应答机制&#xff08;ACK) 超时重传机制 连接管理机制&#xff08;三次握手四次挥…

div中的两个元素怎么实现上下排列

案例: 这里面的分享活动页和获取抽奖机会两个文字上下排列怎么实现? 答案: 父元素加上两个属性: display: flex; flex-direction: column; 就实现了

正则表达式,你不会用太可惜

文章目录 说明创建正则表达式的三种方式方式一方式二方式三 正则表达式修饰符i (IgnoreCase)g (global)m &#xff08;multiple lines&#xff09; 正则表达式[ ]&#xff08;&#xff09; 元字符.w 是word的缩写d 是digit的缩写s 是 space的缩写其它间隙元字符 不占位修饰符b是…

C++泛型编程——模板(初识)

C泛型编程——模板&#xff08;初识&#xff09; 文章目录 C泛型编程——模板&#xff08;初识&#xff09;1. 泛型编程的概念2. 模板2.1 模板格式2.2 函数模板2.3 函数模板的实例化2.3.1 隐式&#xff08;推演&#xff09;实例化2.3.2 显式实例化 2.3 类模板3. 模板的本质 本章…

ES7升级、jar包升级、工具类封装,代码改造

一、spring-data-elasticsearch 引入es版本适配 二、jar升级 在项目工程根pom.xml文件中增加maven依赖管理在这里插入图片描述<properties><elasticsearch.spring.version>4.2.0</elasticsearch.spring.version>

Genio 500_MT8385安卓核心板:功能强大且高效

Genio 500(MT8385)安卓核心板是一款功能强大且高效的AIoT平台&#xff0c;内置的AI处理器(APU)工作频率可达500MHz&#xff0c;支持深度学习、神经网络加速和计算机视觉应用。配合高达2500万像素的摄像头&#xff0c;可以为AI相机应用提供清晰、精确的图像&#xff0c;如人脸识…

怎么防止U盘复制电脑文件

随着信息化的快速发展&#xff0c;数据安全问题越来越受到人们的关注。U盘作为一种常用的数据传输工具&#xff0c;有时会被用于非法复制电脑文件&#xff0c;从而给企业或个人带来损失。因此&#xff0c;防止U盘复制电脑文件成为保护数据安全的重要措施之一。 一、我们应该提高…

为什么原生IP可以降低Google play账号关联风险?企业号解决8.3/10.3账号关联问题?

在Google paly应用上架的过程中&#xff0c;相信大多数开发者都遇到过开发者账号因为关联问题&#xff0c;导致应用包被拒审和封号的情况。 而众所周知&#xff0c;开发者账号注册或登录的IP地址及设备是造成账号关联的重要因素之一。酷鸟云最新上线的原生IP能有效降低账号因I…

TensorRT基础知识及应用【学习笔记(十)】

这篇博客为修改过后的转载&#xff0c;因为没有转载链接&#xff0c;所以选了原创 文章目录 一、准备知识1.1 环境配置A. CUDA DriverB. CUDAC. cuDNND. TensorRT 1.2 编程模型 二、构建阶段2.1 创建网络定义2.2 配置参数2.3 生成Engine2.4 保存为模型文件2.5 释放资源 三、运…