AOF和RDB【Redis持久化篇】
文章目录
- 1.什么是持久化?
- 2.RDB
- 3.AOF
1.什么是持久化?
Redis是跑在内存里的,当程序重启或者服务器崩溃,数据就会丢失,如果业务场景希望重启之后数据还在,就需要持久化,即把数据保存到可永久保存的存储设备中。
那要怎么存储呢?
Redis提供了两种方式:
- RDB(Redis Database Backup),记录Redis某个时刻的全部数据,这种方式本质就是数据快照,直接保存二进制数据到磁盘,后续通过加载RDB文件恢复数据。
- AOF(Append Only File),记录执行的能造成数据变化的写命令,重启之后通过重放命令来恢复数据,AOF本质是记录操作日志,后续通过日志重放恢复数据。
思考一下这几个问题?
1、Redis为什么需要持久化?
是为了在服务器重启或异常情况下,能够保留并恢复数据。
(ps:那怎么保存呢?)
Redis提供了RDB快照方式保存二进制数据到磁盘,以及AOF方式记录写命令,用来后续重放写命令恢复数据。
(ps:它俩有什么区别呢?)
RDB是通过快照生成的是二进制文件,AOF是记录写命令操作日志的文本文件。RDB的恢复数据的速度比AOF的快,但是RDB容易丢失较多的数据,而且RDB每次快照都是全量保存。
(ps:你会用哪个方式?)
如果业务场景能接受分钟级别的数据丢失,我会选择RDB,这也是推荐的一种方式。
2、同时开启AOF和RDB,启动时加载那个?
![[图片]](https://i-blog.csdnimg.cn/direct/759eed2f02d44373a2362234c15ff5a1.png)
有AOF只会用AOF。
2.RDB
RDB本质是什么?
是二进制形式的快照。
(ps:RDB怎么触发?)
RDB可以通过配置定时触发,触发时用的是后台持久化方式。也可以用save命令、bgsave命令主动触发,save底层用的是阻塞式持久化,bgsave用的后台持久化。如果Redis正常关闭,会执行阻塞式持久化。
(ps:RDB执行过程?)
首先,Fork出一个子进程来做RDB持久化;然后,子进程写数据到临时的RDB文件;最后,用新RDB文件替换旧的RDB文件。
3.AOF
1、AOF重写解决什么问题?
重写是用于解决AOF不断膨胀问题,随着命令越来越多,AOF文件越来越大,但是很多数据不一定是由意义的。重写就是通过当前状态,重新生成最新的AOF操作命令记录的过程。重写之后无效的命令会减少,AOF重放时无意义的操作会减少,耗时更短。
2、AOF重写流程?
(一次拷贝,两处缓冲。)主进程在 AOF 重写期间 fork 出子进程,通过写时复制共享内存生成新的 AOF 文件,同时主进程将新的写入命令分别写入 AOF 缓冲(保证旧文件完整性)和 AOF 重写缓冲(同步子进程生成的新文件),以确保数据不丢失。
混合持久化
混合持久化其实是在AOF重写阶段,将当前状态保存为RDB二进制内容,写入新的AOF文件,再将重写缓冲区的内容追加到新的AOF文件,最后代替原有的AOF文件。(AOF文件就是二进制数据+日志数据的混合体)
混合持久化的出现与常规的AOF重写是一致的,更好的解决了AOF文件太大的问题,从文件恢复数据会快一点。
5.0之后,只要开启AOF配置,默认就是混合持久化。
相关文章:
AOF和RDB【Redis持久化篇】
文章目录 1.什么是持久化?2.RDB3.AOF 1.什么是持久化? Redis是跑在内存里的,当程序重启或者服务器崩溃,数据就会丢失,如果业务场景希望重启之后数据还在,就需要持久化,即把数据保存到可永久保存…...
数据可视化大屏UI组件库:B端科技感素材PSD
在数据可视化领域,一个出色的大屏UI设计不仅能够准确传达数据背后的信息,更能提升用户的视觉体验。然而,对于UI设计师而言,设计这样一款界面往往面临着寻找合适设计素材的挑战。为了应对这一难题,我们推出了这款数据可…...
【力扣算法】234.回文链表
快慢指针:一个指针走两步,一个指针走一步,当快指针走到链表末尾时,慢指针走到中间位置。 逆转链表:根据指针位置分成两个表,逆转第二个表。 按序判断就可以,如果是相同就是回文,反之…...
MVC流程分析
DisaptcherServlet本质是servlet,执行init()方法,自启动底层执行代码, 作用: 1、读取springmvc配置文件,创建Controller对象,放入容器中,map<"id",对象> 2、接收用户请求&#…...
编程中常见的技术难题有哪些?
技术的未来:如何驾驭变革 引言 在科技迅猛发展的今天,变革已成为常态。你是否感受到这一波潮流的力量?我们正身处一个充满机遇与挑战的时代。诸如人工智能、区块链、云计算等技术如同狂风骤雨,席卷我们的生活与工作方式。那么&a…...
「Mac玩转仓颉内测版50」小学奥数篇13 - 动态规划入门
本篇将通过 Python 和 Cangjie 双语介绍动态规划的基本概念,并解决一个经典问题:斐波那契数列。学生将学习如何使用动态规划优化递归计算,并掌握编程中的重要算法思想。 关键词 小学奥数Python Cangjie动态规划斐波那契数列 一、题目描述 …...
前端退出对话框也就是点击右上角的叉,显示灰色界面,已经解决
文章目录 遇到一个前端bug,点击生成邀请码 打开对话框 然后我再点击叉号,退出对话框,虽然退出了对话框,但是显示灰色界面。如下图: 导致界面就会失效,点击任何地方都没有反应。 发现是如下代码的问题&am…...
使div每次隐藏显示后都从顶部开始
<div ref"addmodel" > <!-- 这里内容很长,超出屏幕。。。 --> </div> methods:{ // 页面显示时滚动至顶部 scrollToTop() { const addmodel this.$refs.addmodel; if (addmodel) { addmodel.scrollTop 0; } }, } 在div每次显示或者…...
资源付费软件开发 资源付费系统源码 资源付费类型小程序APP
应用场景 资源付费软件广泛应用于多个领域,以下是其主要应用场景: 在线教育: 各类教育机构、名师通过资源付费软件提供课程、讲座等学习资源,为学生提供个性化的学习服务。用户可以通过软件学习专业知识、职业技能等,…...
文件的读写
所涉及到的函数如下:<stdio.h> 函数介绍网站:cplusplus.com - The C Resources Network 读写文件之前要先打开文件,使用完要关闭文件归返空间: fopen 打开 fclose 关闭 返回的是FILE*型,第一个参数是文…...
城市大脑新型智慧城市数据中台建设方案
建设背景与现状 随着城市化进程的加速,城市数据呈现出爆炸式增长,但数据的整合、共享和利用却面临诸多挑战。信息孤岛、数据冗余、管理分散等问题日益突出,制约了智慧城市的发展。为了解决这些问题,构建城市大脑新型智慧城市数据…...
二三(Node2)、Node.js 模块化、package.json、npm 软件包管理器、nodemon、Express、同源、跨域、CORS
1. Node.js 模块化 1.1 CommonJS 标准 utils.js /*** 目标:基于 CommonJS 标准语法,封装属性和方法并导出*/ const baseURL "http://hmajax.itheima.net"; const getArraySum (arr) > arr.reduce((sum, item) > (sum item), 0);mo…...
【sgFileLink】自定义组件:基于el-link、el-icon标签构建文件超链接组件,支持垃圾桶删除、点击预览视频/音频/图片/PDF格式文件
sgFileLink源代码 <template><div :class"$options.name"><el-link click.stop"clickFile(data)"><img :src"getSrc(data)" /><span>{{ getFileNameAndSize(data) }}</span></el-link><el-linkcl…...
Kafka - 消息乱序问题的常见解决方案和实现
文章目录 概述一、MQ消息乱序问题分析1.1 相同topic内的消息乱序1.2 不同topic的消息乱序 二、解决方案方案一: 顺序消息Kafka1. Kafka 顺序消息的实现1.1 生产者:确保同一业务主键的消息发送到同一个分区1.2 消费者:顺序消费消息 2. Kafka 顺…...
【golang】匿名内部协程,值传递与参数传递
代码例子 下面代码的区别是直接调用循环变量,这里使用的就是这个变量的引用,而不是将参数的副本传递给协程执行 for task : range taskChan {wg.Add(1)go func() {defer wg.Done()task.Do() // 使用外部循环变量}() }func DistributeTasks(taskChan &…...
Jenkins与SonarQube持续集成搭建及坑位详解
Jenkins和SonarQube都是软件开发过程中常用的工具,它们在代码管理、构建、测试和质量管理方面发挥着重要作用。以下是关于Jenkins与SonarQube的作用及整合步骤环境搭建的详细解释: 一、Jenkins与SonarQube的作用 Jenkins: Jenkins是一个开源的持续集成和交付工具,它可以帮…...
.NET6 WebAPI从基础到进阶--朝夕教育
1、环境准备 1. Visual Studio 2022 2. .NET6 平台支持 3. Internet Information Services 服务器( IIS ) 4. Linux 服务器 【 CentOS 系统】 ( 跨平台部署使用 ) 5. Linux 服务器下的 Docker 容器( Docker 部署使用) …...
购物车案例--分模块存储数据,发送请求数据渲染,底部总计数量和价格
shift鼠标右键,打开powershell,新建项目 自定义 只有一个页面,不涉及路由,勾选vuex,css,babel 无需保存预设 回车项目开始创建 项目用vscode打开 将src里的内容全部清空 将第七天的课程准备代码复制粘贴到src中 刷新页面&…...
PCIe学习笔记
PCIE高速串行数据总线 当拿到一块板子 比如你要用到PCIE 首先要看这块板子的原理图 一般原理图写的是 PCI express 表示PCIE 以下是Netfpga为例下的PCIE插口元件原理图 
VMware虚拟机共享文件夹配置全指南:从基础配置到疑难解决 在Windows 10主机上使用VMware运行Ubuntu虚拟机进行开发时,共享文件夹功能是提高工作效率的关键。本文将详细介绍如何从零开始配置共享文件夹,并解决常见的"安装按钮灰色"、…...
第三次学习C语言有感
我是一名大一学生,学习的专业是自动化,报专业时想着的是自动化可以走的方面是很广的,想着大学里面可以多多尝试不一样东西看自己对哪一样感兴趣。说实话,因为我对单片机感兴趣才驱使我学习C语言的,虽然嘴上说的是C语言…...
STM32开发中printf重定向的两种实现方法
1. STM32开发中的printf重定向需求解析在嵌入式开发中,调试信息的输出是开发过程中不可或缺的一环。对于STM32这类ARM Cortex-M系列微控制器而言,标准库中的printf函数默认是无法直接使用的,因为这类设备通常没有像PC那样的标准输出设备。这就…...
从Claude Code代码泄漏到AI Agent逻辑设计VS龙虾OpenClaw
近期 Anthropic的Claude Code 的源码泄露事件,为业界提供了一份价值连城的“活体解剖指南”。本文将深入对比高内聚的 Claude Code 架构与高解耦的 OpenClaw 通用框架,从系统执行逻辑、上下文管理、OS 沙盒交互以及记忆提纯等维度,探讨次世代 AI Agent 在模型推理与工程落地…...
百度飞桨PaddleOCR图片印章检测技术简介
百度飞桨PaddleOCR图片印章检测技术简介 全文链接 百度飞桨PaddleOCR图片印章检测技术简介 github仓库:使用PaddleOCR识别图片红色印章文字 red-seal-ocr 3.X和2.X区别较大,建议使用3.X版本。 PaddleX简介 PaddleX github地址PaddleX模型产线使用概览…...
Linux栈机制解析:从原理到实践应用
1. Linux中的栈机制概述在计算机系统中,栈(stack)是一种后进先出(LIFO)的数据结构,它不仅在软件层面有着广泛应用,在硬件层面也扮演着关键角色。大多数处理器架构都实现了硬件栈,有专门的栈指针寄存器和特定的硬件指令来完成入栈/…...
千问3.5-9B参数调优:降低OpenClaw复杂任务token消耗
千问3.5-9B参数调优:降低OpenClaw复杂任务token消耗 1. 为什么需要关注token消耗? 去年冬天第一次用OpenClaw自动整理季度报告时,我被账单吓了一跳——连续运行3天的复杂任务消耗了价值200多美元的token。这让我意识到,在享受自…...
STM32单片机技术解析与应用实践
1. STM32的崛起背景与市场格局演变在2007年之前,单片机市场呈现"三足鼎立"的格局:以STC为代表的51系列8位机占据教学和工业控制领域,MSP430在低功耗应用场景表现突出,AVR和PIC则在特定细分市场各有所长。这些8位和16位单…...
