一文详解Redis持久化的两种方案
一文详解Redis持久化的两种方案
- 1.RDB持久化
- 2.RDB持久化原理
- 3.AOF持久化
- 4.RDB VS AOF
1.RDB持久化
RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。
快照文件称为RDB文件,默认是保存在当前运行目录。
第一种执行RDB的方式,通过命令save:(不推荐,影响正常业务运行,耗时较久)

第二种执行RDB的方式,通过命令bgsave:(推荐,后台持久化,不影响正常业务)

Redis服务在正常停机时会自动进行RDB持久化操作,但是服务宕机则无法进行备份🎈
Redis内部有触发RDB的机制,可以在redis.conf文件中找到,格式如下:

RDB的其它配置也可以在redis.conf文件中设置:

2.RDB持久化原理
bgsave开始时会fork主进程得到子进程,子进程共享主进程的内存数据。完成fork后读取内存数据并写入RDB文件。

为了解决父子进程读写造成的脏读问题,fork采用的是copy-on-write技术:
- 当主进程执行读操作时,访问共享内存;
- 当主进程执行写操作时,则会拷贝一份数据,执行写操作。

总结:
RDB方式bgsave的基本流程?
- fork主进程得到一个子进程,共享内存空间
- 子进程读取内存数据并写入新的RDB文件
- 用新RDB文件替换旧的RDB文件
RDB会在什么时候执行?save 60 1000代表什么含义?
- 默认是服务停止时
- 代表60秒内至少执行1000次修改则触发RDB
RDB的缺点?
- RDB执行间隔时间长,两次RDB之间写入数据有丢失的风险
- fork子进程、压缩、写出RDB文件都比较耗时
3.AOF持久化
AOF全称为Append Only File(追加文件)。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。

AOF默认是关闭的,需要修改redis.conf配置文件来开启AOF:
# 开启AOF持久化
appendonly yes
# AOF备份文件的名称
appendfilename "appendonly.aof"
AOF的命令记录的频率也可以通过redis.conf文件来配:

三种方式优缺点:

在开启AOF持久化,如果不想保持RDB持久化,可以使用此命令禁用RDB持久化:
# 禁用RDB持久化
save ""
因为是记录命令,AOF文件会比RDB文件大的多。而且AOF会记录对同一个key的多次写操作,但只有最后一次写操作才有意义。通过执行bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果。

Redis也会在触发阈值时自动去重写AOF文件。阈值也可以在redis.conf中配置:

4.RDB VS AOF
RDB和AOF各有自己的优缺点,如果对数据安全性要求较高,在实际开发中往往会结合两者来使用。

相关文章:
一文详解Redis持久化的两种方案
一文详解Redis持久化的两种方案1.RDB持久化2.RDB持久化原理3.AOF持久化4.RDB VS AOF1.RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,…...
第六章 - 数据过滤where(where与and和or的组合用法)
第六章 - 数据过滤(where的用法)基本用法where的条件限制符等于号不等号! 或者<>小于<大于>小于等于<大于等于>between 的用法空值和非空值组合条件 and组合条件 orand 和 or 的计算次序in 和 not in基本用法 在查询语句中࿰…...
Oracle 定时任务例子
背景: 创建一个Oracle的定时任务,每天或指定时间 -----定义存储过程 create or replace procedure AAA_BBB as begin insert into AAA select * from BBB; commit; end; ----------------创建定时任务 declare xjobid number; begin DBMS_JOB.SUBM…...
Android常用9种自动化测试框架对比,Appium有哪些优势?
随着移动终端的普及,手机应用越来越多,也越来越重要。 App的回归测试用例数量也越来越多,全量回归也越来越消耗时间。移动 APP自动化测试 的难点移动 APP的UI自动化测试长久以来一直是一个难点,难点在于UI的”变”, 变化导致自动化…...
在vue2使用百度脑图的kityminder-core进行二次开发思维导图,给节点绑定数据后添加新的图标
需求说明:在给某个节点绑定文件数据后,用户并不能一眼看出哪个节点上绑定了数据,因此需要在绑定文件数据后给节点上加一个图标用于标识。 添加图标 1、在kityminder-core/src/module/file.js文件中添加代码 (file.js文件如何添加…...
FPGA时序约束与分析 --- 时序约束概述
本系列参考文献 — FPGA时序与约束分析-吴厚航 FPGA从综合到实现需要的过程如下:synth_design -> opt_design -> place-design -> phys_opt_design -> route_design 1、时序约束的理解 2、时序约束的基本路径 3、时序约束的步骤 4、时序约束的主要方法…...
2022——寒假总结
文章目录背景报名摸索结果总结背景 大一上学期,刚上大学没有尽快适应,什么都没有学到。 因为疫情,所以平时的测试以及期末都是线上进行的,就没怎么认真学,网课直接划水。 我的生活与学习很不平衡,还热衷于参…...
C++11 Lambda表达式
文章首发公众号:iDoitnow 为什么引入Lambda Lambda表达式是一个可以内联在我们代码中的函数,我们可以将他传递给另外一个函数。在没有引入Lambda表达式之前,当我们遇到需要对多个数据,按照同一规则进行操作的时候,创建…...
冰湖灾害遥感监测评价与模拟分析
查看原文>>>mp.weixin.qq.com/s?__bizMzAxNzcxMzc5MQ&mid2247582638&idx1&sna22a1697b16a5edc2b74cb1ccf011689&chksm9be29cbeac9515a8227460103ae1b9f280af688eab0ce5a43448f9fa7c9cab820c389fcdc031&token10630879&langzh_CN#rd【专家简介…...
Highcharts.Chart
Highcharts 是一个使用javascript 脚本来生成图表的工具,和jfreechart 作用类似,都用来生成各种图表,并支持图片的导出和打印。 从官网 www.highcharts.com 上下载的压缩表中的example中有各种图表的例子。 要编写生成图表的例子建议从 文…...
遍历map的几种方法
#先往map加入几个数据 Map<Integer,String> mapnew HashMap<>(); map.put(1,"美好的周一"); map.put(2,"美好的周二"); map.put(3,"美好的周三"); 1 2 3 4 方法一:普通的foreach循环,…...
RocketMQ源码分析之Broker概述与同步消息发送原理与高可用设计及思考
1、Broker概述 Broker 在 RocketMQ 架构中的角色,就是存储消息,核心任务就是持久化消息,生产者发送消息给 Broker,消费者从 Broker 消费消息,其物理部署架构图如下: 备注:以上摘录自官方 RocketMQ 设计文档…...
K8s常见面试题总结
部分内容来自:k8s面试题大全(持续更新中) 目录 k8s常考面试题 1.1.什么是k8s? 1.2.简述Docker和Kubernetes的关系 1.3.k8s的组件有哪些,作用分别是什么? 1.4.简述kubelet的功能和作用 1.5.简述pod是…...
OpenFeign 自定义解码器Decoder 失效
问题描述 项目上开发了OpenFeign的自定义解码器,用来统一处理返回结果。 开发完后测试已经生效了,过两天后,这块代码没有变动的情况下,发现请求结果突然又不走自定义的解码器了。 代码如下 解码器 BaseResponseFeignDecoder …...
c++练习题8
1.在do-while循环中,循环由do开始,用while结束;必须注意的是:在while表达式后面的 不能丢,它表示do-while语句的结束。 A)0 B)1 C);…...
Python循环语句代码详解:while、for、break
目录 1 while循环 1 while循环 循环语句是程序设计中常用的语句之一。任何编程语言都有while循环,Python也不例外。while循环的格式如下所示。 while(表达式): … else: … while循环的执行过程:当循环表达式为真时,依次执行whi…...
vue父子组件传值不能实时更新
最近做项目,遇到个大坑,这会爬出来了,写个总结,避免下次掉坑。 vue父子组件传值不能实时更新问题,父组件将值传给了子组件,但子组件显示的值还是原来的初始值,并没有实时更新,为什么…...
2023美赛A题思路数据代码分享
文章目录赛题思路2023年美国大学生数学建模竞赛选题&论文一、关于选题二、关于论文格式三、关于论文提交四、论文提交流程注意不要手滑美赛A题思路数据代码【最新】赛题思路 (赛题出来以后第一时间在CSDN分享) 最新进度在文章最下方卡片,加入获取一手资源 202…...
【蓝桥杯集训·每日一题】AcWing 3768. 字符串删减
文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴双指针一、题目 1、原题链接 3768. 字符串删减 2、题目描述 给定一个由 n 个小写字母构成的字符串。 现在,需要删掉其中的一些字母,使得字符串中不…...
Python|每日一练|树|深度优先搜索|数组|二分查找|链表|双指针|单选记录:填充每个节点的下一个右侧节点指针|搜索插入位置|旋转链表
1、填充每个节点的下一个右侧节点指针(树,深度优先搜索) 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node *left; Node *rig…...
5种数字内容访问优化技术:从原理到实战的全方位指南
5种数字内容访问优化技术:从原理到实战的全方位指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息驱动的数字时代,高效获取优质内容已成为知识工作者的…...
Docker 学习之路-从入门到放弃-Jenkins:4
Jenkins 打开 ✅ 如图已经完全成功安装并初始化Jenkins了!从图1可以确认:能正常访问Jenkins Web管理界面、登录成功核心功能入口(Create a job/Manage Jenkins等)正常显示构建执行器(Build Executor Status)…...
SEO_2024年最新SEO策略与趋势深度解析(152 )
2024年SEO策略与趋势解析:如何在竞争中脱颖而出 随着互联网的迅猛发展,搜索引擎优化(SEO)在数字营销中的重要性愈发凸显。2024年,SEO策略和趋势继续演变,如何把握最新动向,不仅能提升网站的排名…...
低光增强新突破:拆解DLEN中可学习小波模块的5个设计精妙之处
低光增强新突破:拆解DLEN中可学习小波模块的5个设计精妙之处 当你在昏暗的餐厅里试图用手机拍下美食,或是夜间行车时需要识别模糊的路标,低光图像增强技术正悄然改变着这些场景的视觉体验。传统方法往往在提升亮度的同时丢失了关键细节——桌…...
三相PWM储能变流器PCS设计与仿真:双向DCDC与三相PWM变流器的协调控制策略研究
三相PWM储能变流器PCS仿真设计 【双向DCDC三相PWM变流器】 [1]储能Buck-Boost采用电流PID控制实现双向DC/DC功能,对电池进行恒功率充电或恒功率放电;实现能量由电网与直流母线的双向流动。 [2]三相PWM变流器采用电压外环、电流内环双闭环PI控制ÿ…...
EDA工具集成实战:10个步骤将SkyWater PDK融入您的设计流程
EDA工具集成实战:10个步骤将SkyWater PDK融入您的设计流程 【免费下载链接】skywater-pdk Open source process design kit for usage with SkyWater Technology Foundrys 130nm node. 项目地址: https://gitcode.com/gh_mirrors/sk/skywater-pdk SkyWater P…...
清华大学提出统一多模态模型新突破:让AI同时学会“看“和“画“
这项由清华大学、西安交通大学和中科院大学联合开展的研究发表于2026年的arXiv预印本(论文编号:arXiv:2603.12793v1),研究团队开发了一个名为CHEERS的全新AI模型,能够同时具备图像理解和图像生成两种截然不同的能力。对…...
如何高效使用Godot逆向工程工具:完整实战指南
如何高效使用Godot逆向工程工具:完整实战指南 【免费下载链接】gdsdecomp Godot reverse engineering tools 项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp Godot逆向工程工具(Godot RE Tools)是一个功能强大的开源工具…...
纺织品瑕疵自动检测系统功率MOSFET选型方案——高效、精准与可靠驱动系统设计指南
随着纺织工业智能化升级与质量管控标准提升,纺织品瑕疵自动检测系统已成为现代纺织产线的核心装备。其运动控制、照明驱动与图像采集系统的电源与驱动单元作为系统稳定运行的关键,直接决定了检测精度、响应速度、系统能耗及长期稳定性。功率MOSFET作为各…...
C/C++ snprintf 函数详解
C/C snprintf 函数详解 snprintf 在 C99 中标准化,在固定大小的字符数组中做带长度上限的格式化写入,避免 sprintf 因不检查边界导致的缓冲区溢出。下文说明其原型、返回值语义、与相关 API 的差异及常见用法。 目录 函数原型与参数返回值与截断判定相…...
