Redis6之持久化操作

news2024/10/2 3:28:51

目录

RDB

触发

工作流程

持久化备份

优点

缺点

AOF

触发

频率配置

持久化流程

数据修复

优点

缺点

混合持久化

触发

 优点

缺点

如何选择


 redis是一个内存数据库,一旦断电或服务器进程退出,内存数据库中的数据将全部丢失,所以需要redis持久化;

        redis持久化就是把数据保存在磁盘上,利用永久性存储介质将数据保存,在特定的时间将保存的数据进行恢复的工作机制;

redis提供三种持久化机制:

        RDB:存储数据结果,关注点在数据

        AOF:存储操作过程,关注点在数据的操作过程

        混合持久化:Redis4.0中新增方式,集成了rdb和aof中的优点

RDB

        在指定的时间间隔内(定时)将内存中的数据集写入磁盘,也就是快照,数据恢复是将快照文件直接读到内存中

触发

        1、save命令:执行一个同步操作,以rdb文件的方式保存所有的数据快照

        save命令会占用内存 数据集较小时没有影响 但是如果数据集较大 或者消费者较多时 很容易发生redis阻塞 因为save是一个同步时操作 会影响后面的进程

        2、bgsave命令:执行一个异步操作,以RDB文件的方式保存所有数据的快照

        后台存储,在执行bgsave时 Redis会使用Linux系统中的 fokc() 去生成一个子线程来处理数据的快照 

        3、redis.conf配置文件设置        

             如:save 900 1 // 900 秒内,对数据库至少修改 1 次

工作流程

        1、Redis调用forks(),同时拥有父进程和子进程

        2、子进程将数据写入临时的rdb文件中

        3、当子进程完成对rdb的文件写入时,Redis会用新的rdb文件替换旧的rdb文件,并删除旧的rdb文件

持久化备份

        应该要定时定期的通过脚本对Redis持久化文件进行转移备份,这样双重保险,更加可靠,万一遇到突发情况,也是多一手解决方案,防止出现网络分区或者部分节点宕机甚至是硬件损坏的情况发生

优点

        1、RDB是一个紧凑压缩的二进制文件,存储紧凑,节省内存空间

        2、恢复速度快

        3、适合全量备份、全量复制的场景,经常用于灾难恢复

缺点

        1、RDB方式数据没办法做到实时持久化/秒级持久化

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

AOF

        以日志的形式记录写操作(增删改操作),将Redis执行的所有写指令都记录下来到缓冲区(读操作不记录),然后追加到AOF文件中,当redis重新启动时,就会去重新执行一遍日志文件中的命令来恢复数据;

触发

        修改aof的配置文件:appendonly.aof

        AOF默认不开启,默认为appendonly no,开启则需要修改为appendonly yes

频率配置

        AOF日志是以文件的形式存在的,当程序对AOF日志文件进行写操作时,实际上将内容写到了内核为文件描述符分配的一个内存缓冲区中,随后内核会异步的将缓冲区中的数据刷新到磁盘中。如果缓冲区中的数据没来得及刷回磁盘时,服务器宕机了,这些数据就会丢失

        1、appendfsync always:每次Redis写操作,都写入AOF日志

        2、appendfsync everysec:每秒刷新一次缓冲区中的数据到AOF文件,这个Redis配置文件中默认的策略,兼容了性能和数据完整性的折中方案,这种配置,理论上丢失的数据在一秒钟左右

        3、appendfsync no:不会主动的去刷新缓冲区中的数据到AOF文件中,而是直接交给操作系统去判断,这种操作也是不推荐的,丢失数据的可能性非常大

持久化流程

        1、客户端的写操作请求被追加到AOF缓冲区

        2、AOF根据持久化策略将操作sync同步到磁盘的AOF文件中

        3、AOF文件大小超过重写策略或者手动重写时,会对AOF文件进行rewrite重写,压缩AOF文件容量

        4、redis重启时,会去读取AOF的写操作进行数据恢复

数据修复

        AOF持久化机制正常恢复与RDB持久化机制的恢复是一样的,都只需要将备份文件放置到Redis的工作目录下,Redis启动时就会自动的加载。AOF持久化机制提供了AOF文件异常时恢复的功能,这个功能在AOF文件损坏的场景中经常被使用到

优点

        1、数据备份更加完整,丢失数据的概率更低

        2、日志文件可读,操作性更强,可以通过操作日志文件来进行修复

缺点

        1、AOF文件比RDB更占空间

        2、因为要执行记录的写操作,恢复起来更慢

混合持久化

        集合两者的优点,Redis 4.0提出了混合使用RDBAOF来做持久化,既保证了Redis重启速度,又降低数据丢失风险;

        混合持久化工作在AOF日志重写过程,当开启了混合持久化时,在AOF重写日志时,fork出来的重写子进程会先将与主线程共享的内存数据以RDB方式写入到AOF文件,然后主线程处理的操作命令会被记录在重写缓冲区里,重写缓冲区里的增量命令会以AOF方式写入到AOF文件,写入完成后通知主进程将新的含有RDB格式和AOF格式的AOF文件替换旧的的AOF文件。

        使用了混合持久化,AOF文件的前半部分是RDB格式的全量数据,后半部分是AOF格式的增量数据。其日志文件结构如下:

触发

        混合持久化通过配置:aof-use-rdb-preamble yes开启,Redis 4.0以上版本默认开启

 优点

        混合持久化结合了RDBAOF持久化的优点,开头为RDB的格式,使得Redis可以更快的启动,同时结合AOF的优点,有减低了大量数据丢失的风险

缺点

  AOF文件中添加了RDB格式的内容,使得AOF文件的可读性变得很差

     兼容性差,如果开启混合持久化,那么此混合持久化AOF文件,就不能用在Redis 4.0之前版本了

如何选择

        1、需要很高的性能,或者宕机之后能够尽快的恢复,而对数据完整性的要求不是那么高,那么可以采用RDB持久化的方式

        2、对数据完整性的要求很高,那么可以采用AOF的持久化方式,而至于采用那种回写策略,则取决于你对数据完整性的要求程度

        3、既要兼顾性能,又注重数据完整性,那么可以采用混合持久化的方式

        4、对数据丢失无所谓,追求性能最大化的情况下,你也可以不使用任何持久化方式

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

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

相关文章

【计算机视觉】中科院发布Fast SAM,精度相当SAM,速度提升了50倍!

文章目录 一、导读二、介绍三、方法3.1 实例分割3.2 提示引导选择3.2.1 点提示3.2.2 框提示3.2.3 文本提示 四、实验结果五、不足之处六、结论 一、导读 SAM已经成为许多高级任务(如图像分割、图像描述和图像编辑)的基础步骤。然而,其巨大的…

【云原生丶Docker】Docker容器常用命令大全

在 Docker 核心概念理解 一文中,我们知道 Docker容器 其实就是一个轻量级的沙盒,应用运行在不同的容器中从而实现隔离效果。容器的创建和运行是以镜像为基础的,容器可以被创建、销毁、启动和停止等。本文将介绍下容器的这些常用操作命令。 1、…

2、电商数仓(业务数据采集平台)电商业务流程、电商常识、电商系统表结构、业务数据模拟、业务数据采集模块

1、电商业务简介 1.1 电商业务流程 电商的业务流程可以以一个普通用户的浏览足迹为例进行说明,用户点开电商首页开始浏览,可能会通过分类查询也可能通过全文搜索寻找自己中意的商品,这些商品无疑都是存储在后台的管理系统中的。 当用户寻找…

imx6ull——多点电容触摸

电容触摸寄存器 触点最多5个 触摸屏实现由 IIC驱动、中断驱动、 input子系统组成 触摸屏类型Type A和 Type B Type A:适用于触摸点不能被区分或者追踪,此类型的设备上报原始数据 (此类型在实际使 用中非常少! Type B:适用于有…

SikuliX 实战

一. SikuliX是什么 SikuliX的前身是 Sikuli。Sikuli是由MIT(麻省理工学院)研究团队发布的一种基于OpenCV图像识别技术的自动化工具软件。 Sikuli 是2009 年由在麻省理工学院用户界面设计小组作为一个开源研究项目,负责人分别是Tsung-Hsiang …

42 # 前端 blob 类型

前端的二进制 文件类型 Blob&#xff1a;二进制文件类型input 的 typefile&#xff1a;file 类型&#xff0c;继承于 Blob 前端实现下载功能 实现下载字符串到文件里&#xff0c;需要将字符串包装成二进制类型 <!DOCTYPE html> <html lang"en"><h…

文字对话如何配音?安利你三款制作对话配音的软件

对话配音怎么配&#xff1f;安利三个好用的对话配音软件给你 一分钟告诉你对话配音怎么配 对话配音怎么配&#xff1f;超简单的对话配音制作教程来啦 对话配音软件有哪些&#xff1f;给你安利这三款对话配音软件 对话配音如何操作&#xff1f;分享你三个对话配音小技巧 在电…

想学PMP,有考过的同学给个建议嘛?

PMP中国和国外的考试形式略有不同&#xff0c;这里只介绍一下PMP中国考试的相关信息。 1.PMP考试相关信息 考试形式&#xff1a;笔试 考试时间&#xff1a;230分钟&#xff08;3小时50分钟&#xff09;&#xff0c;一般考试时间在上午9:00~12:50&#xff0c;也会因为特殊情况…

C++primer(第五版)第二章(变量和基本类型)

2.1基本内置类型 2.1.1算术类型 C的基本内置类型包括算数类型和空类型,空类型就是void,算术类型我从原书中截下来放在下面: 从上表我们可以得知C规定int至少和short一样大,long至少和int一样大,longlong至少和long一样大. 其中char(字符)类型支持国际化,所以char会确保可以放…

学Java还是学Android?如何选择?

学Java和学Android都有其各自的好处和应用场景。下面是一些关于学习Java和学习Android的信息&#xff0c;以帮助你做出选择&#xff1a;刚好我这里有嵌入式、plc、单片机的资料需要的在评论区扣6或私我 学习Java&#xff1a; Java是一种通用的编程语言&#xff0c;广泛应用于服…

Simulink自动把所有的double数据转换成single数据

目录 前言 子系统double自动转single操作步骤 总结 前言 在基于模型的开发建模中&#xff0c;模块大多默认的数据类型是double&#xff0c;很多MCU支持的是单精度的浮点&#xff0c;生成代码的部分需要把double转成single数据类型&#xff0c;当然在建模的时候可以配置每一…

GCP学习笔记(三)——存储和安全

文章目录 一、Cloud Storage二、Cloud Bigtable三、Cloud SQL四、Cloud Spanner五、Firestore六、Cloud Datastore七、安全1. Data Loss Prevention2. Stackdriver3. IAM 八、网络概述 在GCP中&#xff0c;我们需要序列化数据使数据能够进行存储和转换。Avro时一种数据序列化方…

清华唐杰新作WebGLM,参数100亿可联网

WebGLM是一个基于大语言模型&#xff08;LLM&#xff09;的联网问答聊天机器人&#xff0c;它的作者是清华大学计算机系唐杰教授团队&#xff0c;它的论文入选了KDD2023会议。 WebGLM的特点是它可以利用Web搜索和检索功能来增强LLM的能力和泛化性&#xff0c;从而实现一个高效、…

智驾产品价值逻辑变了,新一代智驾芯片的核心要求

“根据创新扩散理论&#xff0c;智能汽车的早期用户主要是‘发烧友’&#xff0c;但是真正起量需要依靠‘大众群体’。要想抓住智能驾驶普及的黄金增长机遇&#xff0c;必须捕捉到两个群体的差异化需求&#xff0c;理解行业规则的变化。在当下&#xff0c;智驾产品必须重视功能…

MySQL架构介绍

MySQL架构介绍 和其它数据库相比&#xff0c;MySQL有点与众不同&#xff0c;它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上&#xff0c;插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和…

【软考网络管理员】2023年软考网管初级常见知识考点(15)-网络管理与存储

涉及知识点 网络管理功能&#xff0c;网络管理模型&#xff0c;SNMP协议原理与版本&#xff0c;数据备份&#xff0c;DAS/NAS/SAN技术 软考网络管理员常考知识点&#xff0c;软考网络管理员网络安全&#xff0c;网络管理员考点汇总。 文章目录 涉及知识点一、网络管理功能二、…

容器访问外部网络之Linux ip_forward 数据包转发

文章目录 1 问题解决1.1 问题&#xff1a;1.2 原因&#xff1a;1.3 解决&#xff1a;临时打开&#xff1a;永久打开&#xff1a; 2 net.ipv4.ip_forward内核参数通俗解释3 在Linux中验证并实践net.ipv4.ip_forward设置 IP 地址设置路由信息打开 IP Forward 功能关闭主机 R 的防…

【LeetCode】动态规划 刷题训练(四)

文章目录 面试题 17.16. 按摩师(打家劫舍|)题目解析状态转移方程完整代码 213. 打家劫舍 II题目解析状态转移方程完整代码 740. 删除并获得点数题目解析预处理状态转移方程完整代码 面试题 17.16. 按摩师(打家劫舍|) 点击查看&#xff1a;按摩师 一个有名的按摩师会收到源源不…

【vue小知识】给DOM元素动态的添加上一个类||v-bind的妙用

&#x1f609;博主&#xff1a;初映CY的前说(前端领域) ,&#x1f4d2;本文核心&#xff1a;vue文件怎么给DOM元素加上一个类 项目场景&#xff1a; 在前端页面逻辑操作中通常是存在click事件,添加点击效果是为了让页面操作起来更加的有操作性与互动性,那么有什么方式可以实现…

13个有趣的Python高级脚本!

关注“Python专栏”微信公众号&#xff0c;回复暗号【面试大全】&#xff0c;立即领取面试题简历模板。 每天我们都会面临许多需要高级编码的编程挑战。你不能用简单的 Python 基本语法来解决这些问题。在本文中&#xff0c;我将分享 13 个高级 Python 脚本&#xff0c;它们可以…