Redis系列--redis持久化
一、为什么需要持久化
redis本身运行时数据保存在内存中,如果不进行持久化,那么在redis出现非正常原因宕机或者关闭redis的进程或者关闭计算机后数据肯定被会操作系统从内存中清掉。当然,redis本身默认采用了一种持久化方式,即RDB (Redis DataBase),可以在redis的目录中找到dump.rdb文件,这就是使用RDB方式做持久化后生成的数据文件。
二、常见的两种持久化方式
一、RDB(Redis Database)快照
1、是什么:即redis数据库,rdb持久性以指定的时间间隔执行数据集的时间点快照。
2、作用:
在指定的时间间隔内将内存中的数据集快照写入磁盘。也就是Snapshot内存快照。等redis回复时再将硬盘快照文件直接读回到内存里。保存备份时执行的是全量快照,把内存中的所有数据都保存到dump.rdb文件
3、持久化触发类型:
自动触发:

手动触发:
Redis提供了两个命令来手动生成RDB文件
save:在主进程中执行会阻塞当前redis服务器,直到持久化工作完成,在执行save命令期间,redis不能处理其他命令,线上禁止使用。
bgsave:redis会在后台异步进行快照操作,不阻塞快照同时还可以响应客户端请求,该触发方式会fork一个子进程由子进程复制持久化过程。
注意:生产上只允许用bgsave,不允许用save
lastsave:获取最后一次成功执行快照的时间,获取到的是时间戳,在Linux中可以使用date -d @时间戳进行时间的转换
4、如何恢复
将备份文件移动到redis安装目录并启动服务即可。
注意:1、执行flushall/flushdb命令也会产生dump.rdb文件,但里面是空的,没有任何意义。2、物理恢复,服务和备份分机隔离。以防止生产机物理损坏后备份文件也挂了。
5、优劣势
优点:官网

1、适合大规模数据恢复
2、按照业务定时备份
3、对数据完整性和一致性要求不高
4、RDB文件在内存中的加载速度要比AOF快得多
缺点:官网

1、在一定间隔时间做一次备份,如果redis意外宕机了,就会丢失从当前至最近一次快照期间的数据,快照之间的数据会丢失。
2、内存数据的全量同步,如果数据量太大会导致I/O严重影响服务器性能
3、RDB依赖于主进程的fork,在更大的数据集中,这可能导致服务请求的瞬间延迟。fork的时候内存数据被克隆了一份,大致两倍的膨胀,需要慎重考虑。

6、使用redis -check -rdb 对损坏的rdb文件进行修复
7、RDB的触发
1、配置文件中默认的快照配置,即多少时间内进行了多少次redis数据的操作触发rdb持久化机制
2、手动save/bgsave命令
3、执行flashall/flashdb命令也会产生dump.rdb文件,但里面是空的,无意义。
4、执行shutdown且没有设置开启aof持久化
5、主从复制时,主节点自动触发
8、禁用rdb
1、redis-cli config set save "":动态的所有停止rdb保存规则
2、配置文件上禁用
二、AOF(Append Only File)
一、是什么

二、能干什么
主要是记录每次redis的除读取操作外的所有操作指令,AOF保存的是appendonly.aof文件
三、AOF持久化工作流程


四、AOF缓冲区三种写回策略
1、Always:同步写回,每个写命令执行完立刻同步地将日志写回磁盘。
2、everysec(默认写回策略):每秒写回,每个写命令执行完,只是先把日志写到aof文件的内存缓冲区,每隔1秒把缓冲区中的内容写入到磁盘文件。
3、no:操作系统控制的写回。每个命令执行完,只是先把日志写到AOF文件的内存缓冲区,由操作系统决定何时将缓冲区内容写回磁盘

五、redis7 Multi Part AOF 的设计
redis7之前AOF文件有且只有一个 ,redis7之后有三个文件:base基本文件、incr增量文件、manifest清单文件,且有一个配置目录用于和rdb区分


六、AOF异常文件修复
七、优劣势
优势:

劣势:
1、对于相同数据集的数据而言AOF文件要大于RDB文件,且恢复速度要慢于RDB
2、AOF运行效率慢于RDB,每秒同步策略效率较好,不同步效率和RDB相同
八、AOF重写机制
1、是什么
启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集
2、两种触发机制
自动触发:

手动触发: 直接发送bgrewriteaof命令
重写原理:

自Redis 7.0.0以来,当安排AOF重写时,Redis父进程会打开一个新的增量AOF文件以继续写入。子进程执行重写逻辑并生成新的基本AOF。Redis将使用一个临时清单文件来跟踪新生成的基本文件和增量文件。当它们准备好后,Redis将执行原子替换操作,使这个临时清单文件生效。为了避免在AOF重写重复失败和重试的情况下创建许多增量文件的问题,Redis引入了AOF重写限制机制,以确保失败的AOF重写以越来越慢的速度重试。
Redis会fork一个子进程,所以现在我们有了一个子进程和一个父进程。
子级开始在临时文件中写入新的基本AOF。
父级打开一个新的增量AOF文件以继续写入更新。如果重写失败,旧的基本文件和增量文件(如果有的话)加上这个新打开的增量文件代表了完整的更新数据集,所以我们是安全的。
当子级完成重写基本文件时,父级会得到一个信号,并使用新打开的增量文件和子级生成的基本文件来构建临时清单,并将其持久化。
利润现在Redis对清单文件进行原子交换,以便AOF重写的结果生效。Redis还会清理旧的基本文件和任何未使用的增量文件。
总结:

三、AOF+RDB混合使用
一、同时开启两种持久化方式
reds默认是开启RDB持久化,而不会开启AOF持久化方式,如果两者同时开启,redis优先加载AOF持久化。

二、redis加载顺序
当redis重启的时候会优先加载AOF文件来恢复原始的数据,因为通常情况下AOF文件保存的数据集要比RDB文件保存的数据集更完整。RDB的数据不实时,同时使用两者时服务器重启也只会找AOF文件。由于RDB更适合用于备份数据库(AOF在不断变化不好备份),留着RDB作为一个兜底策略。
四、纯缓存模式
redis并不做持久化,只用做高速缓存,禁用持久化机制可以提高性能。
1、关闭RDB:save "";禁用RDB自动触发模式,手动触发还是可以的
2、关闭AOF:appendonly no;禁用AOF写回策略,手动触发还是可以的。
相关文章:
Redis系列--redis持久化
一、为什么需要持久化 redis本身运行时数据保存在内存中,如果不进行持久化,那么在redis出现非正常原因宕机或者关闭redis的进程或者关闭计算机后数据肯定被会操作系统从内存中清掉。当然,redis本身默认采用了一种持久化方式,即RD…...
在外Windows远程连接MongoDB数据库【无公网IP】
文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 转载自远程内网穿透的文章:公网远…...
学网络安全怎么挖漏洞?怎么渗透?
前言 有不少阅读过我文章的伙伴都知道,我从事网络安全行业已经好几年,积累了丰富的经验和技能。在这段时间里,我参与了多个实际项目的规划和实施,成功防范了各种网络攻击和漏洞利用,提高了安全防护水平。 也有很多小…...
KL散度和交叉熵的对比介绍
KL散度(Kullback-Leibler Divergence)和交叉熵(Cross Entropy)是在机器学习中广泛使用的概念。这两者都用于比较两个概率分布之间的相似性,但在一些方面,它们也有所不同。本文将对KL散度和交叉熵的详细解释…...
浪涌保护器:保护电子设备免受雷击侵害
引言: 随着电子设备在现代生活和工业领域的普及和广泛应用,雷击对电子设备的损害成为一个严重的问题。浪涌保护器作为一种重要的防雷设备,发挥着至关重要的作用。本文将介绍浪涌保护器的防雷作用、行业应用,并重点介绍浪涌保护器…...
js绘制的红心
看腻歪了粒子特效的红心,今天给各位整个线条的,效果图如下: 表白显圣神器,你值得拥有,代码如下: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"…...
十、Feign客户端
目录 1、在springcloud-order项目中引入Feign客户端的依赖 2、在server-order服务的启动类中添加注解EnableFeignClients 3、使用FeignClient注解声明Feign客户端需要调用的远程接口 3.1、server-pay服务提供远程接口Controller 3.2、server-member服务提供远程接口Contro…...
登录appuploader
转载:登录appuploader 常规使用登录方法 双击appuploader.exe 启动appuploader 点击底部的未登录,弹出登录框 在登录框内输入apple开发者账号 如果没有apple开发者账号,只是普通的apple账号,请勾选上未支付688 然后软件会提示…...
都别吹牛逼了,2个英语指令简单评测便知ChatGPT、博弈Ai、文心一言、通义千问、讯飞星火真实水平
一、博弈Ai:GPT3.5版 演示:https://chat.bo-e.com/ 1、充当英语发言助手 评分:10分 总结:完整满足了指令需求 2、充当英汉互译器 评分:8分 总结:基本满足了我的指令需求。但是有点啰嗦,扣…...
使用Spring Boot快速搭建项目:减少配置,提升开发效率
使用Spring Boot快速搭建项目:减少配置,提升开发效率 一、Spring Boot简介1 Spring Boot的起源2 Spring Boot的核心特点3 Spring Boot的优势 二、Spring Boot快速搭建项目1 Spring Boot的项目搭建方式使用Spring Initializr创建项目使用Spring Boot CLI创…...
(2)数码管
LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成"8"字器件 51单片机是共阴极连接 74HC245这个芯片有什么作用呢?解:这个芯片被称之为双向数据缓冲器这个芯片的作用,用来进行数据缓冲(提高驱…...
赫夫曼树和赫夫曼编码详解
目录 何为赫夫曼树? 赫夫曼树算法 赫夫曼编码 编程实现赫夫曼树 编程实现赫夫曼编码 编程实现WPL 总代码及分析 何为赫夫曼树? 树的路径长度:从树根到每一结点的路径长度之和 结点的带权路径长度:从树根到该结点的路径长度…...
unity UGUI系统梳理 -交互组件
概述 unity 中的交互组件可用于处理交互,例如鼠标或触摸事件以及使用键盘或控制器进行的交互 1、按钮 (Button) Button详解 2、开关 (Toggle) Background:背景图片,控制toggle组件的背景颜色改变,从而展示此物体是否被选中的…...
HTTP第15讲——HTTP的连接管理
短连接 HTTP 协议最初(0.9/1.0)是个非常简单的协议,通信过程也采用了简单的“请求 - 应答”方式。 它底层的数据传输基于 TCP/IP,每次发送请求前需要先与服务器建立连接,收到响应报文后会立即关闭连接。 因为客户端与…...
深度剖析Mybatis-plus Injector SQL注入器
背景 在项目中需要同时操作Sql Server 以及 MySQL 数据库,可能平时直接使用 BaseMapper中提供的方法习惯 了,不用的话总感觉影响开发效率,但是两个数据库的SQL语法稍微有点差别,有些暴露的方法并不能直接使用,所以便想…...
【Mysql实战】使用存储过程和计算同比环比
背景 同环比,是基本的数据分析方法。在各类调研表中屡见不鲜,如果人工向前追溯统计数据,可想而知工作量是非常大的。 标题复制10行,并且每行大于10个字符【源码解析】SpringBoot接口参数【Mysql实战】使用存储过程和计算同比环比…...
ChatGPT的前世今生,到如今AI领域的竞争格局,本文带你一路回看!
73年前,“机器思维”的概念第一次被计算机科学之父艾伦图灵(Alan Turing)提出,从此,通过图灵测试成为了人类在AI领域为之奋斗的里程碑目标。 73年后的今天,在AI历经了数十年的不断进化、迭代后,…...
如何在JavaScript中获取当前时间yyyymmddhhmmss? (六种实现方式)
## 介绍 在编写JavaScript代码时,我们经常需要获取当前日期和时间。在本文中,我们将介绍几种获取当前时间并将其格式化为 yyyymmddhhmmss 的字符串的方法。 方法一:使用Date对象 在JavaScript中,我们可以使用 Date 对象来获取当…...
一、走进easyUI的世界
1.什么是easyUI? jQuery EasyUI是一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要…...
2023 上半年软件设计师知识点复习总纲
前言:全国计算机技术与软件专业技术资格(水平)考试(以下简称IT职业资格考试)是由中华人民共和国人事部主管,国家计算机网络与信息安全管理中心主办的一项国家级、权威性的计算机职业技能水平认证考试。主要…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
前端调试HTTP状态码
1xx(信息类状态码) 这类状态码表示临时响应,需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分,客户端应继续发送剩余部分。 2xx(成功类状态码) 表示请求已成功被服务器接收、理解并处…...
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...
