当前位置: 首页 > news >正文

一文详解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实例故障重启后&#xff0c…...

第六章 - 数据过滤where(where与and和or的组合用法)

第六章 - 数据过滤&#xff08;where的用法&#xff09;基本用法where的条件限制符等于号不等号! 或者<>小于<大于>小于等于<大于等于>between 的用法空值和非空值组合条件 and组合条件 orand 和 or 的计算次序in 和 not in基本用法 在查询语句中&#xff0…...

Oracle 定时任务例子

背景&#xff1a; 创建一个Oracle的定时任务&#xff0c;每天或指定时间 -----定义存储过程 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有哪些优势?

随着移动终端的普及&#xff0c;手机应用越来越多&#xff0c;也越来越重要。 App的回归测试用例数量也越来越多&#xff0c;全量回归也越来越消耗时间。移动 APP自动化测试 的难点移动 APP的UI自动化测试长久以来一直是一个难点&#xff0c;难点在于UI的”变”, 变化导致自动化…...

在vue2使用百度脑图的kityminder-core进行二次开发思维导图,给节点绑定数据后添加新的图标

需求说明&#xff1a;在给某个节点绑定文件数据后&#xff0c;用户并不能一眼看出哪个节点上绑定了数据&#xff0c;因此需要在绑定文件数据后给节点上加一个图标用于标识。 添加图标 1、在kityminder-core/src/module/file.js文件中添加代码 &#xff08;file.js文件如何添加…...

FPGA时序约束与分析 --- 时序约束概述

本系列参考文献 — FPGA时序与约束分析-吴厚航 FPGA从综合到实现需要的过程如下&#xff1a;synth_design -> opt_design -> place-design -> phys_opt_design -> route_design 1、时序约束的理解 2、时序约束的基本路径 3、时序约束的步骤 4、时序约束的主要方法…...

2022——寒假总结

文章目录背景报名摸索结果总结背景 大一上学期&#xff0c;刚上大学没有尽快适应&#xff0c;什么都没有学到。 因为疫情&#xff0c;所以平时的测试以及期末都是线上进行的&#xff0c;就没怎么认真学&#xff0c;网课直接划水。 我的生活与学习很不平衡&#xff0c;还热衷于参…...

C++11 Lambda表达式

文章首发公众号&#xff1a;iDoitnow 为什么引入Lambda Lambda表达式是一个可以内联在我们代码中的函数&#xff0c;我们可以将他传递给另外一个函数。在没有引入Lambda表达式之前&#xff0c;当我们遇到需要对多个数据&#xff0c;按照同一规则进行操作的时候&#xff0c;创建…...

冰湖灾害遥感监测评价与模拟分析

查看原文>>>mp.weixin.qq.com/s?__bizMzAxNzcxMzc5MQ&mid2247582638&idx1&sna22a1697b16a5edc2b74cb1ccf011689&chksm9be29cbeac9515a8227460103ae1b9f280af688eab0ce5a43448f9fa7c9cab820c389fcdc031&token10630879&langzh_CN#rd【专家简介…...

Highcharts.Chart

Highcharts 是一个使用javascript 脚本来生成图表的工具&#xff0c;和jfreechart 作用类似&#xff0c;都用来生成各种图表&#xff0c;并支持图片的导出和打印。 从官网 www.highcharts.com 上下载的压缩表中的example中有各种图表的例子。 要编写生成图表的例子建议从 文…...

遍历map的几种方法

#先往map加入几个数据 Map<Integer,String> mapnew HashMap<>(); map.put(1,"美好的周一"); map.put(2,"美好的周二"); map.put(3,"美好的周三"); 1 2 3 4 方法一&#xff1a;普通的foreach循环&#xff0c…...

RocketMQ源码分析之Broker概述与同步消息发送原理与高可用设计及思考

1、Broker概述 Broker 在 RocketMQ 架构中的角色&#xff0c;就是存储消息&#xff0c;核心任务就是持久化消息&#xff0c;生产者发送消息给 Broker,消费者从 Broker 消费消息&#xff0c;其物理部署架构图如下&#xff1a; 备注&#xff1a;以上摘录自官方 RocketMQ 设计文档…...

K8s常见面试题总结

部分内容来自&#xff1a;k8s面试题大全&#xff08;持续更新中&#xff09; 目录 k8s常考面试题 1.1.什么是k8s&#xff1f; 1.2.简述Docker和Kubernetes的关系 1.3.k8s的组件有哪些&#xff0c;作用分别是什么&#xff1f; 1.4.简述kubelet的功能和作用 1.5.简述pod是…...

OpenFeign 自定义解码器Decoder 失效

问题描述 项目上开发了OpenFeign的自定义解码器&#xff0c;用来统一处理返回结果。 开发完后测试已经生效了&#xff0c;过两天后&#xff0c;这块代码没有变动的情况下&#xff0c;发现请求结果突然又不走自定义的解码器了。 代码如下 解码器 BaseResponseFeignDecoder …...

c++练习题8

1&#xff0e;在do-while循环中&#xff0c;循环由do开始&#xff0c;用while结束&#xff1b;必须注意的是&#xff1a;在while表达式后面的 不能丢&#xff0c;它表示do-while语句的结束。 A&#xff09;0 B&#xff09;1 C&#xff09;&#xff1b;…...

Python循环语句代码详解:while、for、break

目录 1 while循环 1 while循环 循环语句是程序设计中常用的语句之一。任何编程语言都有while循环&#xff0c;Python也不例外。while循环的格式如下所示。 while(表达式): … else: … while循环的执行过程&#xff1a;当循环表达式为真时&#xff0c;依次执行whi…...

vue父子组件传值不能实时更新

最近做项目&#xff0c;遇到个大坑&#xff0c;这会爬出来了&#xff0c;写个总结&#xff0c;避免下次掉坑。 vue父子组件传值不能实时更新问题&#xff0c;父组件将值传给了子组件&#xff0c;但子组件显示的值还是原来的初始值&#xff0c;并没有实时更新&#xff0c;为什么…...

2023美赛A题思路数据代码分享

文章目录赛题思路2023年美国大学生数学建模竞赛选题&论文一、关于选题二、关于论文格式三、关于论文提交四、论文提交流程注意不要手滑美赛A题思路数据代码【最新】赛题思路 (赛题出来以后第一时间在CSDN分享) 最新进度在文章最下方卡片&#xff0c;加入获取一手资源 202…...

【蓝桥杯集训·每日一题】AcWing 3768. 字符串删减

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴双指针一、题目 1、原题链接 3768. 字符串删减 2、题目描述 给定一个由 n 个小写字母构成的字符串。 现在&#xff0c;需要删掉其中的一些字母&#xff0c;使得字符串中不…...

Python|每日一练|树|深度优先搜索|数组|二分查找|链表|双指针|单选记录:填充每个节点的下一个右侧节点指针|搜索插入位置|旋转链表

1、填充每个节点的下一个右侧节点指针&#xff08;树&#xff0c;深度优先搜索&#xff09; 给定一个 完美二叉树 &#xff0c;其所有叶子节点都在同一层&#xff0c;每个父节点都有两个子节点。二叉树定义如下&#xff1a; struct Node { int val; Node *left; Node *rig…...

魔兽争霸3帧率解锁与界面修复终极指南:3步解决所有显示异常

魔兽争霸3帧率解锁与界面修复终极指南&#xff1a;3步解决所有显示异常 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3的卡顿画面和界…...

Nrfr免Root SIM卡国家码修改工具:3步教程突破区域限制

Nrfr免Root SIM卡国家码修改工具&#xff1a;3步教程突破区域限制 【免费下载链接】Nrfr &#x1f30d; 免 Root 的 SIM 卡国家码修改工具 | 解决国际漫游时的兼容性问题&#xff0c;帮助使用海外 SIM 卡获得更好的本地化体验&#xff0c;解锁运营商限制&#xff0c;突破区域限…...

基于Vue 3与TypeScript的Dify AI聊天前端开发与部署实战

1. 项目概述&#xff1a;一个现代化的Dify AI聊天前端 如果你正在寻找一个开箱即用、界面美观且功能完整的Dify AI聊天前端&#xff0c;那么LeeAirQ/Dify-Web这个项目值得你花时间了解一下。作为一个长期在AI应用层折腾的开发者&#xff0c;我见过太多后端强大但前端简陋的AI项…...

如何提升co项目代码质量:ESLint规则与异步检查完整指南

如何提升co项目代码质量&#xff1a;ESLint规则与异步检查完整指南 【免费下载链接】co The ultimate generator based flow-control goodness for nodejs (supports thunks, promises, etc) 项目地址: https://gitcode.com/gh_mirrors/co/co co作为Node.js生态中基于生…...

ANSYS FLUENT:从网格划分到结果可视化的CFD求解全流程解析

1. ANSYS FLUENT入门&#xff1a;为什么选择这款CFD工具 第一次接触计算流体力学仿真时&#xff0c;面对市面上五花八门的CFD软件&#xff0c;我完全不知道该从哪入手。后来在导师建议下尝试了ANSYS FLUENT&#xff0c;才发现它特别适合像我这样的新手。FLUENT最吸引人的地方在…...

Jetson Nano到手后别急着烧系统,先做好这5步准备(含SD卡选购与电源避坑)

Jetson Nano开箱必做的5项硬件准备&#xff1a;从SD卡到电源的完整避坑指南 当你第一次拿到Jetson Nano开发板时&#xff0c;那种迫不及待想立刻通电体验的冲动完全可以理解。但作为一个经历过多次"翻车"的老玩家&#xff0c;我必须提醒你&#xff1a;直接烧录系统很…...

OpenTwitter MCP Server:让AI助手连接社交媒体,实现自动化情报监控

1. 项目概述&#xff1a;当AI助手学会“刷”社交媒体如果你和我一样&#xff0c;日常工作中需要频繁关注特定领域&#xff08;比如加密货币、科技动态或某个行业&#xff09;的社交媒体动态&#xff0c;那你一定理解那种被信息流淹没的疲惫感。手动刷新、筛选、整理&#xff0c…...

AI舞蹈生成实战:从扩散模型原理到seedance-2.0部署与调优

1. 项目概述&#xff1a;从种子到舞蹈的AI生成革命最近在AI生成领域&#xff0c;一个名为“seedance-2.0”的项目引起了我的注意。这个项目名本身就很有意思&#xff0c;“seedance”可以拆解为“seed”&#xff08;种子&#xff09;和“dance”&#xff08;舞蹈&#xff09;&a…...

提升boardgame.io游戏加载速度的终极指南:客户端缓存策略全解析

提升boardgame.io游戏加载速度的终极指南&#xff1a;客户端缓存策略全解析 【免费下载链接】boardgame.io State Management and Multiplayer Networking for Turn-Based Games 项目地址: https://gitcode.com/gh_mirrors/bo/boardgame.io boardgame.io是一款专注于回合…...

如何用Sticky便签应用提升Linux桌面工作效率的5个秘诀

如何用Sticky便签应用提升Linux桌面工作效率的5个秘诀 【免费下载链接】sticky A sticky notes app for the linux desktop 项目地址: https://gitcode.com/gh_mirrors/stic/sticky 你是否厌倦了在多个窗口间切换查找笔记&#xff1f;是否经常忘记重要的待办事项&#x…...