三、Redis持久化

目录

一、Redis持久化的原理

1、RDB方式:

2、AOF方式:

二、redis 持久化配置

1、RDB持久化相关配置

2、AOF持久化相关配置


一、Redis持久化的原理

        Redis默认情况下,是把数据存储在内存中的,所有数据的写入,查询等操作都是直接操作内存。存在的问题就是,假如断电后,数据即丢失,为了解决这个问题,Redis提供了向磁盘中写入数据的方式,即持久化机制。Redis持久化机制的方式有两种,RDB和AOF

1、RDB方式:

        默认启动的数据持久化方式,基于时间的快照,只保留当前最新的一次快照,根据配置文件指定策略,它定期将内存中的数据快照到磁盘上的二进制文件

        具体实现过程:Redis主进程先fork出一个子进程,子进程将内存的数据保存为一个临时文件,然后将临时文件写入到磁盘上中,最后用这个临时文件替换原来的RDB文件。

优点:

  • RDB 快照 保存了某个时间点的数据,可以通过脚本执行 bgsave 非 阻塞 或者 save( 阻塞 命令自定义时间点备份,可以保留多个备份,当出现问题可以恢复到不同时间点的版本。
  • 可以最大化 IO的性能,因为父进程在保存 RDB 文件的时候唯一要做的是 fork 出一个子进程,然后的操作都会有这个子进程操作,父进程无需任何的 IO操作,RDB在大量数据比如几个G的数据,恢复的速度比AOF的快。

缺点:

  • 存在数据丢失的风险,因为RDB文件是定期生成的,如果Redis意外崩溃,最近一次生成RDB文件之后的数据可能会丢失。
  • RDB文件的恢复速度可能较慢,特别是当数据集较大时,fork子进程可能需要耗费大量的时间和内存。

2、AOF方式:

        AOF持久化将Redis服务器接收到的每个写命令追加到文件末尾。这个AOF文件是一个以文本方式记录Redis操作的日志文件,它可以重现服务器从启动到当前的所有写命令。因此AOF文件会随着时间的增长而文件大小不断扩大,并且可能会造成额外的数据记录。但是Redis还有一个机制,可以自动的扫描AOF文件,并且把冗余的操作进行合并,该机制由bgrewriteof命令实现,该命令在执行后,会将Redis中的数据以命令的方式保存起来,并替换原有的文件。

优点:

  • 提供更高级别的持久性,能够在故障发生时提供更好的数据恢复保证。
  • 可以配置不同级别的同步策略,从而实现不同程度的性能和数据安全之间的权衡。

缺点:

  • AOF文件通常比RDB文件更大。
  • 在恢复大型AOF文件时,加载数据的速度可能会较慢。

二、redis 持久化配置

1、RDB持久化相关配置

在redis.conf中1、save
RDB持久化主要是通过save参数配置,
save后面第一个参数为时间,单位是秒,第二个参数为改动次数。
因此,第一行表示在900秒内,改动次数超过1此时,就进行持久化备份,
第二行表示在300秒内,改动次数超过10次,就进行持久化备份,
第三行表示在60秒内,改动次数超过10000次,就进行持久化备份。
通常而言,改动次数越多,所需要时间就会越短。2、stop-writes-on-bgsave-error yes
当该参数设置为yes时,在进行RDB备份的时候,一旦发生错误,就会停止写操作。3、rdbcompression yes
当该参数设置为yes时,RDB持久化备份会进行压缩,这个过程会消耗CPU资源,但是会节省存储空间。4、rdbchecksum yes
当该参数设置为yes时,Redis在生成RDB备份文件时会生成校验信息,在启动加载RDB文件时,会对RDB文件的校验码进行检查,只有校验检验成功,才会启动Redis,该参数会导致Redis启动变慢,但是可以防止错误。5、dbfilename dump.rdb
该参数定义了RDB文件的名称。6、rdb-del-sync-files no
用于控制在RDB持久化时是否同步删除旧的RDB文件。当设置为no时,Redis在生成新的RDB文件之前不会删除旧的RDB文件。这个参数的默认值是yes,表示生成新的RDB文件之前会同步删除旧的RDB文件。7、dir ./
该参数定义了RDB文件的存放路径。

2、AOF持久化相关配置

1、appendonly no
该参数定义了是否开启AOF持久化,为NO,表示不开启AOF持久化,为YES,表示开启AOF持久化,默认为NO,表示不开启AOF持久化。2、appendfilename "appendonly.aof"
该参数定义了AOF持久化的写入文件。3、appendfsync everysec
表示何时进行持久化,当参数为always时,每次收到写命令时,立即进行AOF持久化备份,这样做可以最大程度上防止数据丢失,但是会造成性能下降;
当该参数为everysec时,表示每秒钟写一次,不管这一秒收到多少个数据写请求;
当该参数为NO时,表示由操作系统决定何时进行持久化备份。4、no-appendfsync-on-rewrite no
当该参数为yes时,表示在重写时,对于新的写操作不做同步,而是暂时存放在内存中。
5、auto-aof-rewrite-percentage 1006、auto-aof-rewrite-min-size 64mb
该参数也是定义了AOF持久化的时机,后面跟的是一个大小,比如当该值为63mb时,表示当文件为63mb时会进行持久化操作。

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

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

相关文章

【Linux】在 Linux 上模拟网络故障

文章目录 模拟网络丢包模拟网络延迟、抖动模拟网络包重复模拟网络带宽受限模拟网络错误模拟网络乱序重置网络清空所有规则 模拟网络丢包 # 在enp189s0f1网络接口上替换排队规则,应用netem规则来模拟30%的数据包丢失 tc qdisc replace dev enp189s0f1 root netem lo…

吴恩达2022机器学习专项课程(一) 第二周课程实验:多元线性回归(Lab_02)

1.训练集 使用Numpy数组存储数据集。 2.打印数组 打印两个数组的形状和数据。 3.初始化w,b 为了演示,w,b预设出接近最优解的值。w是一个一维数组,w个数对应特征个数。 4.非向量化计算多元线性回归函数 使用for循环&…

程序“猿”:现实世界的魔法师

在这个由代码构建的数字世界里,程序员就像现实世界中的魔法师。他们用键盘敲击出的符号和逻辑,创造出让人们生活变得更加便捷和丰富的软件和应用。但除了技术的高深莫测,你知道程序员们最喜欢什么吗?让我们一探究竟。 首先&#x…

【pycharm报错】rror: Microsoft Visual C++ 14.0 or greater is required.

一、报错 二、下载vs 路径:https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/ 三、安装 四、安装成功并启动 重新安装chromadb成功

springCloud-LoadBalancer负载均衡微服务负载均衡器LoadBalancer

2020年前SpringCloud是采用Ribbon作为负载均衡实现,但是在2020后采用了LoadBalancer替代 LoadBalancer默认提供了两种负载均衡策略(只能通过配置类来修改负载均衡策略) 1.RandomLoadBalancer-随机分配策略 2.RoundRobinLoadBalancer-轮询分配…

Linux IO的奥秘:深入探索数据流动的魔法

Linux I/O(输入/输出)系统是其核心功能之一,负责处理数据在系统内部及与外界之间的流动。为了优化这一流程,Linux进行了一系列努力和抽象化,以提高效率、灵活性和易用性。🚀 1. 统一的设备模型 Linux将所…

鸿蒙ArkTS开始实例:【canvas实现签名板功能】

使用ArkTS中的canvas实现签名板的功能,canvas画布大家都很熟悉,我们会用它经常实现一些画板或者图表、表格之类的功能。canvas签名板是我在开发APP过程中实现的一个功能,开发过程中也是遇到比较多的问题。我会按照以下几点来讲解开发整个过程…

使用docx4j转换word为pdf处理中文乱码问题

word转pdf 实现方法 mavendocx4j版本自己酌情升级 实现方法 import org.docx4j.Docx4J; import org.docx4j.fonts.IdentityPlusMapper; import org.docx4j.fonts.Mapper; import org.docx4j.fonts.PhysicalFonts; import org.docx4j.openpackaging.packages.WordprocessingMLP…

Qt 4.7作业

1、自由发挥应用场景实现一个登录窗口界面。 【可以是QQ登录界面、也可以是自己发挥的登录界面】 要求:尽量每行代码都有注释 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//设置窗口标题this->setWindowTitle(&q…

模块十一 面向对象

回顾与重点 模块十回顾 继承:子类继承父类,可以直接使用父类中非私有成员,子类不用写重复性代码 关键字:extends 成员访问特点: a. 成员变量:看等号左边是谁 b. 成员方法:看new的是谁 方法的…

pytorch交叉熵

目录 1. Entropy2. 交叉熵3. 二分类4. 为什么分类问题使用交叉熵5. 代码示例 1. Entropy Entropy中文是熵的意思,它代表一种不确定性,不确定性越高惊喜度也就越高。 如上图,假设熵代表中奖概率,当熵为2 的中奖概率为1/4没什么惊…

数字乡村:科技引领新时代农村发展

随着信息技术的迅猛发展和数字化浪潮的推进,数字乡村作为新时代农村发展的重要战略,正日益成为引领农村现代化的强大引擎。数字乡村不仅代表着农村信息化建设的新高度,更是农村经济社会发展的重要支撑。通过数字技术的深入应用,农…

ICP的一点学习笔记

1. ICP算法相关 2.GICP算法笔记,参考http://www.roboticsproceedings.org/rss05/p21.pdfAbstract:在本文中结合ICP和点云面ICP算法到一个概率框架。接下来要使用这个框架进行局部平面结构而不是通常的点面方法。这个可以认为是面到面方法。与标准的ICP和点到面方法相比&#xf…

常州餐饮行业小程序解决方案:赋能顾客体验与订单转化

随着移动互联网的飞速发展,餐饮行业的数字化转型已成为必然趋势。在常州这座文化底蕴深厚、美食资源丰富的城市中,餐饮企业如何借助小程序这一轻量级应用平台,优化顾客体验并提升订单转化率,显得尤为重要。本文将深入探讨一套针对…

npm版本切换工具nvm

有了nvm,可以在一台机器上同时安装多个版本的nodejs,然后指定使用某个版本。 前端开发的时候,安装依赖一直是个令我头痛的问题。总是报错,或者不是少了这样就是少了那样,鸡飞狗走。以往,一般要装个enpm&am…

安卓java打包uniapp原生插件 和 uniapp使用安卓android原生插件

1.uniapp dcloud官方文档 简介 | uni小程序SDK 2.前提,需要有经验的安卓java开发人员,并且同时具备uniapp移动端开发经验。说明:android打包的.aar和uniapp需要的.aar是不一样的,uniapp需要的.aar是需要有一些特定配置的&#x…

HarmonyOS实战开发DLP-如何实现一个安全类App。

介绍 本示例是一个安全类App,使用ohos.dlpPermission 接口展示了在eTS中普通文件加密受限的过程。 效果预览 使用说明: 1.启动应用后点击“”按钮可以添加一个普通文件; 2.长按点击加密按钮,出现加密权限弹窗,选择需要设置的权限并点击确定…

深入浅出 -- 系统架构之负载均衡Nginx缓冲区

一、Nginx缓冲区 先来思考一个问题,接入Nginx的项目一般请求流程为:“客户端→Nginx→服务端”,在这个过程中存在两个连接:“客户端→Nginx、Nginx→服务端”,那么两个不同的连接速度不一致,就会影响用户的…

《从零开始学架构》读书笔记(一)

目录 软件架构设计产生的历史背景 软件架构设计的目的 系统复杂度来源 追求高性能 一、单机高性能 二、集群的高性能 追求高可用 一、计算高可用 二、存储高可用 追求可扩展性 一、预测变化 二、应对变化 追求安全、低成本、规模 一、安全 二、低成本 三、规模…

蓝桥杯 历届真题 杨辉三角形【第十二届】【省赛】【C组】

资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 思路: 由于我第一写没考虑到大数据的原因,直接判断导致只得了40分,下面是我的代码: #…