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

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,启动时加载那个?
[图片]

有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&#xff0c;执行init()方法&#xff0c;自启动底层执行代码&#xff0c; 作用&#xff1a; 1、读取springmvc配置文件&#xff0c;创建Controller对象&#xff0c;放入容器中&#xff0c;map<"id",对象> 2、接收用户请求&#…...

编程中常见的技术难题有哪些?

技术的未来&#xff1a;如何驾驭变革 引言 在科技迅猛发展的今天&#xff0c;变革已成为常态。你是否感受到这一波潮流的力量&#xff1f;我们正身处一个充满机遇与挑战的时代。诸如人工智能、区块链、云计算等技术如同狂风骤雨&#xff0c;席卷我们的生活与工作方式。那么&a…...

「Mac玩转仓颉内测版50」小学奥数篇13 - 动态规划入门

本篇将通过 Python 和 Cangjie 双语介绍动态规划的基本概念&#xff0c;并解决一个经典问题&#xff1a;斐波那契数列。学生将学习如何使用动态规划优化递归计算&#xff0c;并掌握编程中的重要算法思想。 关键词 小学奥数Python Cangjie动态规划斐波那契数列 一、题目描述 …...

前端退出对话框也就是点击右上角的叉,显示灰色界面,已经解决

文章目录 遇到一个前端bug&#xff0c;点击生成邀请码 打开对话框 然后我再点击叉号&#xff0c;退出对话框&#xff0c;虽然退出了对话框&#xff0c;但是显示灰色界面。如下图&#xff1a; 导致界面就会失效&#xff0c;点击任何地方都没有反应。 发现是如下代码的问题&am…...

使div每次隐藏显示后都从顶部开始

<div ref"addmodel" > <!-- 这里内容很长&#xff0c;超出屏幕。。。 --> </div> methods:{ // 页面显示时滚动至顶部 scrollToTop() { const addmodel this.$refs.addmodel; if (addmodel) { addmodel.scrollTop 0; } }, } 在div每次显示或者…...

资源付费软件开发 资源付费系统源码 资源付费类型小程序APP

应用场景 资源付费软件广泛应用于多个领域&#xff0c;以下是其主要应用场景&#xff1a; 在线教育&#xff1a; 各类教育机构、名师通过资源付费软件提供课程、讲座等学习资源&#xff0c;为学生提供个性化的学习服务。用户可以通过软件学习专业知识、职业技能等&#xff0c…...

文件的读写

所涉及到的函数如下&#xff1a;<stdio.h> 函数介绍网站&#xff1a;cplusplus.com - The C Resources Network 读写文件之前要先打开文件&#xff0c;使用完要关闭文件归返空间&#xff1a; fopen 打开 fclose 关闭 返回的是FILE*型&#xff0c;第一个参数是文…...

城市大脑新型智慧城市数据中台建设方案

建设背景与现状 随着城市化进程的加速&#xff0c;城市数据呈现出爆炸式增长&#xff0c;但数据的整合、共享和利用却面临诸多挑战。信息孤岛、数据冗余、管理分散等问题日益突出&#xff0c;制约了智慧城市的发展。为了解决这些问题&#xff0c;构建城市大脑新型智慧城市数据…...

二三(Node2)、Node.js 模块化、package.json、npm 软件包管理器、nodemon、Express、同源、跨域、CORS

1. Node.js 模块化 1.1 CommonJS 标准 utils.js /*** 目标&#xff1a;基于 CommonJS 标准语法&#xff0c;封装属性和方法并导出*/ 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的消息乱序 二、解决方案方案一&#xff1a; 顺序消息Kafka1. Kafka 顺序消息的实现1.1 生产者&#xff1a;确保同一业务主键的消息发送到同一个分区1.2 消费者&#xff1a;顺序消费消息 2. Kafka 顺…...

【golang】匿名内部协程,值传递与参数传递

代码例子 下面代码的区别是直接调用循环变量&#xff0c;这里使用的就是这个变量的引用&#xff0c;而不是将参数的副本传递给协程执行 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 服务器&#xff08; IIS &#xff09; 4. Linux 服务器 【 CentOS 系统】 ( 跨平台部署使用 ) 5. Linux 服务器下的 Docker 容器&#xff08; Docker 部署使用&#xff09; …...

购物车案例--分模块存储数据,发送请求数据渲染,底部总计数量和价格

shift鼠标右键&#xff0c;打开powershell&#xff0c;新建项目 自定义 只有一个页面&#xff0c;不涉及路由&#xff0c;勾选vuex,css,babel 无需保存预设 回车项目开始创建 项目用vscode打开 将src里的内容全部清空 将第七天的课程准备代码复制粘贴到src中 刷新页面&…...

PCIe学习笔记

PCIE高速串行数据总线 当拿到一块板子 比如你要用到PCIE 首先要看这块板子的原理图 一般原理图写的是 PCI express 表示PCIE 以下是Netfpga为例下的PCIE插口元件原理图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/01dc604fbdc847e8998a978c83c7b2eb.png 一般主…...

The Rise and Potential of Large Language ModelBased Agents:A Survey---讨论

讨论 论法学硕士研究与Agent研究的互利性 近年来&#xff0c;随着激光诱导金属化技术的发展&#xff0c;激光诱导金属化与化学剂交叉领域的研究取得了长足的进步&#xff0c;促进了这两个领域的发展。在此&#xff0c;我们期待着LLM研究和Agent研究相互提供的一些益处和发展机…...

OpenClaw图像描述生成:Qwen3-14b_int4_awq处理截图内容分析

OpenClaw图像描述生成&#xff1a;Qwen3-14b_int4_awq处理截图内容分析 1. 为什么需要自动化图像描述生成 在日常工作中&#xff0c;我经常遇到需要快速理解软件界面截图或数据图表的情况。作为开发者&#xff0c;每次看到复杂的仪表盘或新工具界面时&#xff0c;总要花时间手…...

C语言自学必看:最经典C语言书推荐

最经典的C语言书都在这了。 1、C Primer Plus 第6版 中文版C语言是鉴于满足程序员需求而被设计出来的&#xff0c;程序员借助C能够去访问硬件&#xff0c;能够操控内存里的位。C语言存有丰富的运算符&#xff0c;可使程序员得以简洁地表述自身意图。C语言不像Pascal那般严谨&am…...

保姆级教程:在Win10上用VMware给Ubuntu虚拟机配置共享文件夹(含重启失效解决方案)

VMware虚拟机共享文件夹配置全指南&#xff1a;从基础配置到疑难解决 在Windows 10主机上使用VMware运行Ubuntu虚拟机进行开发时&#xff0c;共享文件夹功能是提高工作效率的关键。本文将详细介绍如何从零开始配置共享文件夹&#xff0c;并解决常见的"安装按钮灰色"、…...

第三次学习C语言有感

我是一名大一学生&#xff0c;学习的专业是自动化&#xff0c;报专业时想着的是自动化可以走的方面是很广的&#xff0c;想着大学里面可以多多尝试不一样东西看自己对哪一样感兴趣。说实话&#xff0c;因为我对单片机感兴趣才驱使我学习C语言的&#xff0c;虽然嘴上说的是C语言…...

STM32开发中printf重定向的两种实现方法

1. STM32开发中的printf重定向需求解析在嵌入式开发中&#xff0c;调试信息的输出是开发过程中不可或缺的一环。对于STM32这类ARM Cortex-M系列微控制器而言&#xff0c;标准库中的printf函数默认是无法直接使用的&#xff0c;因为这类设备通常没有像PC那样的标准输出设备。这就…...

从Claude Code代码泄漏到AI Agent逻辑设计VS龙虾OpenClaw

近期 Anthropic的Claude Code 的源码泄露事件,为业界提供了一份价值连城的“活体解剖指南”。本文将深入对比高内聚的 Claude Code 架构与高解耦的 OpenClaw 通用框架,从系统执行逻辑、上下文管理、OS 沙盒交互以及记忆提纯等维度,探讨次世代 AI Agent 在模型推理与工程落地…...

百度飞桨PaddleOCR图片印章检测技术简介

百度飞桨PaddleOCR图片印章检测技术简介 全文链接 百度飞桨PaddleOCR图片印章检测技术简介 github仓库&#xff1a;使用PaddleOCR识别图片红色印章文字 red-seal-ocr 3.X和2.X区别较大&#xff0c;建议使用3.X版本。 PaddleX简介 PaddleX github地址PaddleX模型产线使用概览…...

Linux栈机制解析:从原理到实践应用

1. Linux中的栈机制概述在计算机系统中&#xff0c;栈(stack)是一种后进先出(LIFO)的数据结构&#xff0c;它不仅在软件层面有着广泛应用&#xff0c;在硬件层面也扮演着关键角色。大多数处理器架构都实现了硬件栈&#xff0c;有专门的栈指针寄存器和特定的硬件指令来完成入栈/…...

千问3.5-9B参数调优:降低OpenClaw复杂任务token消耗

千问3.5-9B参数调优&#xff1a;降低OpenClaw复杂任务token消耗 1. 为什么需要关注token消耗&#xff1f; 去年冬天第一次用OpenClaw自动整理季度报告时&#xff0c;我被账单吓了一跳——连续运行3天的复杂任务消耗了价值200多美元的token。这让我意识到&#xff0c;在享受自…...

STM32单片机技术解析与应用实践

1. STM32的崛起背景与市场格局演变在2007年之前&#xff0c;单片机市场呈现"三足鼎立"的格局&#xff1a;以STC为代表的51系列8位机占据教学和工业控制领域&#xff0c;MSP430在低功耗应用场景表现突出&#xff0c;AVR和PIC则在特定细分市场各有所长。这些8位和16位单…...