Redis持久化机制—RDB与AOF

Redis持久化机制

RDB(默认)

**思想:**保存整个数据库的快照,也就是RDB文件,有两种保存方式,前台保存save和后台保存bgsave,前者会阻塞主进程程,后者则是fork一个子进程去完成备份操作,不会阻塞。

注意:fork子进程的过程是阻塞的,完成之后不再阻塞

**开启方式:**默认开启

设置备份频率
请添加图片描述
特点:

  • 数据恢复速度快(响应速度很重要,所以默认用RDB):使用 RDB 文件恢复数据,直接解析还原二进制数据即可,不需要一条一条地执行命令,速度非常快。
  • 备份的RDB文件AOF文件小很多,因为RDB只记录最终值,而AOF会完整记录变化过程
  • 安全性相对较低,因为全量备份时开销比较大,故无法实时备份,备份的间隔长
  • 备份期间的对性能影响比较大,因为是全量备份,且每次都需要fork一个子进程

思考问题:如果子进程读取数据写入到RDB文件的期间,数据发生了变化,如何处理?

用了copyonwrite机制,对于要写的那部分数据,先进行拷贝,然后再写,写入RDB的数据不会有变化。

AOF

思想:记录所有执行的写命令到AOF文件中,备份时只需要往原本的AOF文件追加指令即可,当重启时将AOF文件的指令全部执行一遍即可恢复

**开启方式:**修改redis.conf配置文件,把appendonly 设置为 yes

appendonly yes

持久化过程:

  • 执行修改命令
  • 更改内存中的数据结构
  • 记录到AOF缓冲区
  • 根三种同步(刷盘)策略,将缓冲区数据同步到AOF文件中(AOF过大时可以重写AOF文件进行压缩)
  • 重启,加载AOF文件,执行命令,恢复数据

在这里插入图片描述

AOF同步(刷盘)的三种策略:
在这里插入图片描述
三种策略的对比
在这里插入图片描述
特点:

  • 安全性高,能够做到实时(秒级)的备份
  • 备份轻量,只需要追加命令即可,不像RDB的全量备份那么消耗CPU 资源和内存资源
  • 恢复速度慢,因为需要一条一条执行AOF文件记录的语句
  • 备份的文件较大,可以用REWRITEAOF命令重写,但体积还是会比RDB大

思考问题:执行写命令时,是先记录执行命令还是先记录到AOF文件中?为什么?

一般的数据库(如 MySQL)通常都是执行命令之前先记录好日志,这样方便故障恢复,防止数据丢失。但是Redis是先执行命令,再记录到AOF。

优点:

  • 保证实时可见性,响应速度快,即用户执行完写操作后用户能够立即读取到更新后的数据。
  • 查减少写操作的延迟,提高吞吐量,因为在记录日志前不需要再对命令做语法检。

缺点:如果命令执行完,但没有来得及写入AOF,服务器宕机了,此时数据会丢失。不过redis的AOF的间隔比较短,只会丢失少量数据。真正的数据源一般都在mysql里面,故影响不大。

选用RDB还是AOF?

  • 正常情况使用RDB,因为他数据恢复速度快,而丢失一些数据相对影响没这么大,真正的数据还在数据库中。
  • 只有当对安全性有很高要求时,选择AOF,可以做到秒级别的备份。

在这里插入图片描述

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

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

相关文章

C++入门9——list的使用

目录 1.什么是list? 2.list的构造 3.list迭代器的使用(list iterator) 4.list capacity 5.list modifiers 6.list的其他操作 1.什么是list? 在官网中,对list有这样的介绍: Lists are sequence co…

SLM561A​​系列 60V 10mA到50mA线性恒流LED驱动芯片 为智能家居照明注入新活力

SLM561A系列选型参考: SLM561A10ae-7G SOD123 SLM561A15ae-7G SOD123 SLM561A20ae-7G SOD123 SLM561A25ae-7G SOD123 SLM561A30ae-7G SOD123 SLM561A35ae-7G SOD123 SLM561A40ae-7G SOD123 SLM561A45ae-7G SOD123 SLM561A50ae-7G SOD123 …

【软件文档】软件系统需求管理规程(项目管理word原件)

软件资料清单列表部分文档清单:工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调研计划,用户需求调查单,用户需求说明书,概要设计说明书,技术解…

中秋之美——html5+css+js制作中秋网页

中秋之美——html5cssjs制作中秋网页 一、前言二、功能展示三、系统实现四、其它五、源码下载 一、前言 八月十五,秋已过半,是为中秋。 “但愿人长久,千里共婵娟”,中秋时节,气温已凉未寒,天高气爽&#x…

VS Code 调试go程序的相关配置说明

用 VS code 调试Go程序需要在.vscode/launch.json文件中增加如下配置: // launch.json {// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.…

改写二进制文件

以下是一些常见的方法和工具: 1. 使用十六进制编辑器 十六进制编辑器 是最直接的工具之一,用于查看和编辑二进制文件中的数据。它允许你以十六进制格式查看和修改文件内容。 常见十六进制编辑器: HxD(Windows)Hex F…

【LabVIEW学习篇 - 16】:文件操作

文章目录 CSV文件CSV写入CSV读取 TXT文件txt写入txt读取 INI文件INI文件写入INI文件读取 CSV文件 .csv (Comma-Separated Values)是逗号分隔值文件格式,有时也称之为字符分隔值,因为分隔符也可以不是逗号(最常见的是逗号和制表符)&#xff0…

(一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别

🍂1、不说废话,现象展示 🍃图片识别 🍃视频识别 自己训练样本 十分简易快速 opencv级联ha

小皮面板webman ai项目本地启动教程

1.前置条件 下载小皮面板 下载后,双击安装,一路next(下一步),无需更改配置。 2.安装必须软件 在小皮面板的软件管理页,安装编号①②③④下面四个软件。 3.启动本地服务 进入到小皮面板的首页&#x…

空指针异常 (NullPointerException)怎么办

在 Java 编程中,空指针异常(NullPointerException,简称 NPE)是最常见且困扰开发人员的异常之一。尽管 Java 是一种强类型语言,设计上提供了类型安全的特性,但空指针问题依然是开发过程中最常见的运行时异常…

MES系统如何支持企业进行数字化转型

MES系统(Manufacturing Execution System,制造执行系统)在企业数字化转型中扮演着至关重要的角色,它通过提供实时的生产数据、优化生产流程、提升质量管理水平、实现设备智能化管理以及促进企业内部协同和沟通等多种方式&#xff…

Linux_kernel移植linux09

一、温故知新 1、分析uboot源码目录 每个目录基本上都会有自己的Makefile进行当前层级目录的编译,最后在整个uboot源码目录中会有一个Makefile文件进行整合,将每一层级编译出的目标文件,整合到一起,链接到一起,最终生成…

vscode从本地安装插件

1. 打开VSCode。 2. 点击左侧菜单中的“扩展”(或按CtrlShiftX)。 3. 点击“更多操作”(三个点)> “从VSIX安装”。 4. 选择下载的.vsix文件。 5. 点击“安装”即可安装插件。

传统CV算法——基于Opencv的图像绘制

直线绘制 参数解析: (图像矩阵,直线起始坐标, 直线终止坐标、颜色、线条厚度) cv2.line()是OpenCV中用于绘制直线的函数。 参数说明:img:要绘制直线的图像矩阵。(100,30):直线的起…

视频提取字幕的软件有哪些?高效转录用这些

探索视频的奥秘,从字幕开始!你是否曾被繁复的字幕处理困扰,渴望有一款简单好用的在线免费软件来轻松解锁字幕提取? 告别手动输入的烦恼,我们为你精选了6款视频字幕提取在线免费软件,它们不仅能一键转录&am…

堆-数组的堆化+优先队列(PriorityQueue)的使用

一、堆 1、什么是堆? 以完全二叉树的形式将元素存储到对应的数组位置上所形成的新数组 2、为什么要将数组变成堆? 当数组中的元素连续多次进行排序时会消耗大量的时间,将数组变成堆后通过堆排序的方式将会消耗更少的时间 二、接口 给堆…

这才是程序猿梦想的终端,赶快动手搞起来

文章目录 目标资源列表安装iTerm2安装oh-my-zsh安装颜色主题查找配置文件将配置内容复制到本地设置iTerm2 安装NERD FONTS下载字体安装设置iTerm2 安装PowerLevel10k修改.zshrc重新加载配置 安装插件下载[语法高亮](#syntaxhighlighting)下载[命令提示](#autosuggestions)配置插…

数据结构与算法02 - 复杂度

1、空间复杂度 空间复杂度指的是临时占用存储空间大小的量度;空间复杂度计算的是变量的个数,也采用大O渐进表示法;由于函数在运行的时候所需要的栈空间(存储参数、局部变量、一些寄存器信息等)在编译器已经确定好了&a…

Kafka【十二】消费者拉取主题分区的分配策略

【1】消费者组、leader和follower 消费者想要拉取主题分区的数据,首先必须要加入到一个组中。 但是一个组中有多个消费者的话,那么每一个消费者该如何消费呢,是不是像图中一样的消费策略呢?如果是的话,那假设消费者组…

MySQL 锁分类有哪些?一文带你详解!!

MySQL 锁 全局锁全局锁的应用场景全局锁的缺点 表级锁表锁元数据(MDL)锁MDL 锁的问题 意向锁AUTO-INC 锁 行级锁记录锁(Record Lock)间隙锁(Gap Lock)临键锁(Next-Key Lock)插入意向…