Redis持久化:RDB和AOF(版本redis 7.0)

news2024/11/29 10:50:30

什么是持久化?

学过计算机基础的都知道以一种磁盘,只要关机,那么磁盘的内容都会被清空,这种磁盘称为内存,而Redis则是一种内存数据库,redis中的数据也都存储在磁盘中,如果服务器中进程被关掉,或者是计算机不小心宕机了,那么数据库的内容也就消失了,而持久化则是预防这种情况的发生,它主要的功能则是保存数据。

RDB(Redis Database)

它的执行流程为在执行时间间隔内将内存中的数据通过快照的方式写进磁盘中,这种方法也可以成为Snapshot快照,恢复数据时会将文件(RDB文件)恢复到内存中。这种快照的工作机制为Redi数据库会创建一个fork子进程,这个子进程会将内存中得到数据写入到一个临时文件中,通过持久化完成后,临时文件会更替上次产生的RDB文件,在整个持久化过程中,是不会进行io操作的,这样就确保了极高的性能。在持久化过程中可能出现的问题就是在Redis数据库中的最后一次操作可以会丢失。

fork子进程

Fork 的作用是复制一个与当前进程一样的进程。

新进程的所有数据(变量,环境变量,程序计数器等)数值都和原进程一致。

这是一个全新的进程,并作为原进程的子进程。

RDB 保存的是 dump.rdb 文件:

关于快照文件,在redis.conf配置文件中各种配置

配置一:

  1. save 3600 1
  2. save 300 100
  3. save 60 10000

这是RDB快照触发的机制:

  • 1 分钟内改了 1 万次
  • 5 分钟内改了 10 次
  • 15 分钟内改了 1 次

如果想禁用 RDB 持久化的策略,只要不设置任何 save 指令,或者给 save 传入一个空字符串参数也可以。

若要修改完毕需要立马生效,可以手动使用 save 命令,立马生效 。

stop-writes-on-bgsave-error

如果配置为 no,表示你不在乎数据不一致或者有其他的手段发现和控制,默认为 yes。

rbdcompression

对于存储到磁盘中的快照,可以设置是否进行压缩存储。

如果是的话,redis 会采用 LZF 算法进行压缩,如果你不想消耗 CPU 来进行压缩的话,可以设置为关闭此功能。

rdbchecksum

在存储快照后,还可以让 redis 使用 CRC64 算法来进行数据校验。

但是这样做会增加大约 10% 的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。

默认为 yes。

RDB文件生成时的触发文件

1:按照配置文件执行,上面的触发机制

2:收到保存

        save:只管保存,其他不管,全部阻塞。

        bgsave:Redis 会在后台异步进行快照操作,快照同时还可以响应客户端请求。

        lastsave:获取最后一次成功执行快照的时间。

3:执行flushall命令会触发RDB文件的生成机制

4:退出的时候也会产生RDB文件

如何恢复上次的数据呢?

将备份文件 dump.rdb 移动到 redis 安装目录并启动服务即可。

查看本地数据库目录:

 只需要将RDB文件放在redis文件夹下,那么开启服务的时候,redis会自动检查RDB文件,然后恢复其数据

 优点:

1:适合大规模的数据恢复

2:对数据的完整性和一致性不高时适用

缺点:

1:在一点的间隔时间进行一次备份,如果redis意外的宕机,会丢失最后一次快照后的所有数据

2:fork子进程,内存中的数据会被克隆一份,大概有2倍膨胀性需要进行考虑

AOF(Append Only File)

工作方法:通过日志方式来记录每个关于写的操作,将所有的redis指令全都记录下来(读记录则不会记录在日志文件中。

AOF文件只允许在文件的基础上追加内容,不允许进行改写文件,文件会在开启redis服务时,重新恢复数据。恢复工作则是将日志的文件全都执行一遍

注意:在redis默认的环境下则是不开启的,需要在配置文件进行配置开启服务。

关于AOF在配置文件中的配置

# 是否以append only模式作为持久化方式,默认使用的是rdb方式持久化,这种方式在许多应用中已经足够用了
appendonly no 
# appendfilename AOF 文件名称
appendfilename "appendonly.aof" 
# appendfsync aof持久化策略的配置:
#     no:不执行fsync,由操作系统保证数据同步到磁盘,速度最快。
#     always:每次写入都执行fsync,以保证数据同步到磁盘。
#     everysec:每秒执行一次fsync,可能会导致丢失这1s数据。
appendfsync everysec 
# 重写时是否可以运用Appendfsync,用默认no即可,保证数据安全性
No-appendfsync-on-rewrite 
# 设置重写的基准值
Auto-aof-rewrite-min-size 
# 设置重写的基准值
Auto-aof-rewrite-percentage

开启AOF服务

开启AOF服务命令

127.0.0.1:6379> config set appendonly yes

ok

关闭RDB服务

127.0.0.1:6379> CONFIG set save ""    
OK

 创建三个key值

127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK

重启服务

看看创建的键值是否还在

说明AOF成功 

 AOF配置

注意:在redis 7之后,AOF日志文件由一个aof文件变成一个文档,文档为appendonlydir文件
 
仅追加文件名是由Redis按照特定的模式创建的。 
文件名前缀是基于'appendfilename'配置的 
参数,后面是关于序列和类型的附加信息。

例如,如果appendfilename设置为appendonly。 Aof,下面的文件 
names可以被派生: 
appendonly.aof.1.base。 RDB作为基本文件。 
appendonly.aof.1.incr。 aof appendonly.aof.2.incr。 作为增量文件的Aof。 
将appendonly.aof.manifest作为一个manifest文件。在默认使用的持久化的优先级中,AOF的优先级比RDB高

为了aof文件出现一个问题,redis中有一个工具可以修复aof文档

如果你的配置都没有问题,但是就是连接不上redis数据库,就有可能就是aof日志文件有问题可以通过这个工具修复一下aof文件

 redis-cheak-aof --fix /usr/local/redis/appendonlydir/appendonly.aof.1.incr.aof 

 redis-cheak-aof就是那个工具,只要安装redis服务,就有这个工具

appendonly.aof.1.incr.aof 则是放在日志信息的文件在appendonlydir文件中修复它就可以进行正常的连接了

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

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

相关文章

麻了,真的不想做测试了...

前言 有不少技术友在测试群里讨论,近期的面试越来越难了,要背的八股文越来越多了,考察得越来越细,越来越底层,明摆着就是想让我们徒手造航母嘛!实在是太为难我们这些测试工程师了。 这不,为了帮大家节约时…

Mathtype修改硕士论文公式格式

Mathtype修改硕士论文格式 1将word格式的公式变为mathtype格式1选中公式2点击mathtype中的转换公式 2修改mathtype格式的公式文字版式 1将word格式的公式变为mathtype格式 1选中公式 如果不选公式默认全文所有公式或者指定的公式。 2点击mathtype中的转换公式 选择要转换的…

汽车功能安全

前言 近些年来,功能安全在汽车传统底盘域和动力域的应用已较为成熟,各大汽车企业功能安全意识也逐渐增强。在辅助驾驶和自动驾驶爆发式增长的大趋势下,现代汽车的功能安全在目前尤为复杂的电子电气系统中就显得更为重要,功能安全…

MySQL---存储过程流程控制(判断(if、case)、循环(while、repeat、loop))

1. if判断 IF语句包含多个条件判断,根据结果为TRUE、FALSE执行语句,与编程语言中的if、else if、else 语法类似,其语法格式如下: -- 语法 if search_condition_1 then statement_list_1[elseif search_condition_2 then statem…

十八、Stream 流

目录 1、为什么要引入SpringCloud Stream 2、SpringCloud Stream简介 2.1、标准MQ架构图 2.2、SpringCloud Stream架构图 2.3、SpringCloud Stream处理流程 3、如何使用SpringCloud Stream 3.1、创建springcloud-stream-sender项目(消息生产者) …

SpringCloud_服务调用_Ribbon负载算法简介与如何替换(二)

SpringCloud_服务调用_Ribbon负载算法简介与如何替换(二) Ribbon核心组件IRule IRule:根据特定算法中从服务列表中选取一个要访问的服务 IRule接口有多种实现: Ribbon自带的7种负载规则 com.netflix.loadbalancer.RoundRobinRule 轮询 com.netflix.loadbalancer.Ra…

8年测试老鸟总结,软件测试工程师关键成长晋升要素,这些不能不知道...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、技术-依然是最…

MySQL深入浅出:自增长序列(@i:=@i+1)的用处及用法

目录 1:问题分析 2:模拟自增长序列 2.1 单表查询 2.2 多表关联查询 3:结束语 社区 1:问题分析 Oracle中的伪列 ROWNUM 是一组递增的序列,在查询数据时生成,为结果集中每一行标识一个行号, 每条记录…

医院运维场景下的风险感知

随着医疗信息化建设发展,医院的系统、设备不断叠加,在提升用户体验,享受高效医疗服务的同时,也为支撑系统稳定运行的信息部门带来巨大挑战。诸如科室复杂、应用场景多、终端运维工作量大、软件系统兼容需求强等痛点,并…

WPF MaterialDesign 初学项目实战(0):github 项目Demo运行

前言: 最近在学B站的WPF项目实战合集(2022终结版),但是到22P时候发现UI框架 MaterialDesignThemes的Github上面的程序没办法正常运行,最后折腾了好久终于解决。 github地址 gitcode镜像地址 下载成功后 下载成功后是如下效果 打开这个文…

259元,诺基亚返祖式新机玩了把大的

智能手机经过这么多年发展,市场逐渐趋向成熟。 在这个过程中,优胜劣汰这一自然法则同样适用,无数没能经受住市场考验的企业也只能含泪离场。 其中最典型的例子还得是曾经手机中的王者诺基亚了。 当初在 Symbian(塞班系统&#x…

php event原理以及对象与属性赋值

1、定义时间原理 2、定义对象与对象与属性赋值 ps:赋值过程其实会通过魔术方法_get调动本类的set方法 来源B站大佬视频 4.Yii2.0 Advanced Object与Property的关系_哔哩哔哩_bilibili

刚入职,就想跑路了...

刚入职一家公司,想离职又怕找不到新工作。 说实话,这个问题还是蛮常见的,很多时候,入职的公司并不是自己最满意的,即使是最满意的,入职后总会遇到各种各样的不顺心,公司制度不规范啊&#xff0…

C++ 图进阶系列之剖析二分图的染色算法和匈牙利算法

1. 前言 二分图又称作二部图或称为偶图,是图论中的一种特殊类型,有广泛的应用场景。 什么是二分图? 二分图一般指无向图。看待问题要有哲学思想,有二分图也可以是有向图。 如果图中所有顶点集合能分成两个独立的子集&#xff0…

常用好用的远程连接工具分享

1、RayLink 介绍: RayLink它是一款功能强大的远程控制软件,支持Windows、macOS、IOS以及Android等多种操作系统。同时,它还提供了手机端和桌面端两种不同的应用程序,可以通过手机控制电脑,也可以通过电脑控制手机。这…

C语言编程软件

C语言是一门历史很长的编程语言,其编译器和开发工具也多种多样,其开发工具包括编译器,现举几个开发工具供大家选择,当然也要根据自己的操作系统来选择适合自己的开发工具。 好多刚开始接触c语言的朋友都想知道用上面软件开发c语言…

【JavaScript数据结构与算法】字符串类(计算二进制子串)

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,也会涉及到服务端(Node.js) 📃个人状态: 在校大学生一枚,已拿多个前端 offer(…

Grafana之Graph Panel使用(05)

Graph是Grafana的原生插件。使用Graph Panel,可以将数据展示成折线、条状、点状等风格。Graph是Grafana展示数据的缺省图形面板,它提供了一组非常丰富的绘图选项。 ① Panel options(面板选项)主要包括:Title(标题);Description(描述) ②Tooltip(鼠标经过图例展示数据效果)…

数字产品在教育行业的应用:关键特点和必备功能概览

数字化转型的浪潮已经席卷了各行各业,不仅出现在互联网、电商、建筑等行业,还应用在了教育行业。数字化的教育ERP软件能够在满足学校需求的基础上,帮助学校完善各类工作流程,提高工作效率。 对于一个拥有多个校区,上万…

LAY-EXCEL实现导入和导出excel功能

lay-excel 是一款开源的、基于 Google Sheets 的免费的在线数据表格库。它使用了 Google Sheets 的开源代码,并进行了本地化处理,以适应中国用户的使用习惯。 lay-excel 提供了丰富的数据表格类型,包括常见的表格、表格拆分、表格计算、图表等…