尚硅谷redis7 37-39 redis持久化之AOF简介

news2025/5/28 2:13:46

37 redis持久化之AOF简介

AOF

以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作
默认情况下,redis是没有开启AOF(append only file)的。开启AOF功能需要设置配置:appendonly yes

当appendonly设置为yes,每当 Redis 收到一个修改数据集的命令(比如 SET),它就会将该命令追加到 AOF 文件中。

Redis AOF(Append Only File)机制的基本原理 —— 以日志形式记录所有写操作,用于恢复数据。当你重启 Redis 时,它会重新执行 AOF 中的命令,来重建内存中的数据状态

38 redis持久化之AOF工作流程和写回策略

AOF持久化工作流程

  1. Client作为命令的来源,会有多个源头以及源源不断的请求命令。
  2. 在这些命令到达Redis Server以后并不是直接写入AOF文件,会将其这些命令先放入AOF缓存中进行保存。这里的AOF缓冲区实际上是内存中的一片区域,存在的目的是当这些命令达到一定量以后再写入磁盘,避免频繁的磁盘IO操作。
  3. AOF缓冲会根据AOF缓冲区同步文件的三种写回策略将命令写入磁盘上的AOF文件。
  4. 随着写入AOF内容的增加为避免文件膨胀,会根据规则进行命令的合并(又称AOF重写),从而起到AOF文件压缩的目的。
  5. 当redis server服务器重启的时候会从AOF文件载入数据

三种写回策略

Always

同步回写,每个写命令执行完立刻同步地将日志写回磁盘

everysec【默认策略】

每秒写回,每个写命令执行完,只是先把日志写到AOF文件的内存缓冲区,每隔1秒把缓冲区的内容写入磁盘。

no

操作系统控制的写回,每个写命令执行完,只是先把日志写到AOF文件的内存缓冲区,由操作系统决定何时将缓冲区内容写回磁盘

总结

39 redis持久化之AOF功能配置开启

配置文件说明

如何开启AOF

要开启 Redis 的 AOF(Append Only File)持久化机制,只需在 Redis 的配置文件中设置如下:

appendonly yes

使用默认写回策略,每秒钟

AOF文件-保存路径

redis6:AOF保存文件的位置和RDB保存文件的位置一样,都是通过redis.conf配置文件的dir配置

若设定dir 为/myreids 则rdb和aof的保存路径为:

redis7:为了方便管理,Redis 会将所有持久化的 AOF(追加文件)存储在一个专用目录中。这个目录的名称由配置参数 appenddirname 决定。

appenddirname "appendonlydir"

若设定dir 为/myreids 则rdb和aof的保存路径为:

AOF文件-保存名称

redis6:AOF(追加文件)的文件名(默认值:"appendonly.aof")

appendfilename "appendonly.aof"

redis7:使用Multi Part AOF的设计,从一个文件变为三个文件。

  • appendonly.aof.1.base.rdb 作为基础文件。

  •  appendonly.aof.1.incr.aofappendonly.aof.2.incr.aof 作为增量文件。

  •  appendonly.aof.manifest 作为清单文件。

顾名思义,MP-AOF就是将原来的单个AOF文件拆分成多个AOF文件。在MP-AOF中,我们将AOF分为三种类型,分别为:

  • BASE:表示基础AOF,它一般由子进程通过重写产生,该文件最多只有一个。
    • 记录某一时刻的完整数据状态,可能是 RDB 格式(用于快速重建)。
  • INCR:表示增量AOF,它一般会在AOFRW开始执行时被创建,该文件可能存在多个。
    • 记录从基础快照之后发生的写操作命令。
  • HISTORY:表示历史AOF,它由BASE和INCR AOF变化而来,每次AOFRW成功完成时,本次AOFRW之前对应的BASE和INCR AOF都将变为HISTORY,HISTORY类型的AOF会被Redis自动删除
    • 描述 base 文件和 incr 文件的加载顺序,是 Redis 启动时恢复数据的参考。

为了管理这些AOF文件,我们引入了一个manifest(清单)文件来跟踪、管理这些AOF。同时,为了便于AOF备份和拷贝,我们将所有的AOF文件和manifest文件放入一个单独的文件目录中,目录名由appenddirname配置(Redis 7.0新增配置项)决定。

总结:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2387159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GitLab 备份所有仓库(自动克隆)

一、准备工作 1. 环境要求 已安装 Git(版本 2.10)本地磁盘空间充足(根据仓库总大小预估)已配置 SSH 密钥到 GitLab(推荐方式) 2. 获取 GitLab API 访问权限 登录 GitLab,点击右上角头像 → …

[浏览器]缓存策略机制详解

在做页面性能优化的时候,有一个点容易被忽略,那就是资源缓存优化。 浏览器里缓存策略分为强缓存,协商缓存以及不缓存,每个缓存策略都有其适用的优化场景。 下面为大家详解何为强缓存,协商缓存 先说结论强缓>协商&g…

OpenCV CUDA 模块图像过滤-----创建一个计算图像导数的滤波器函数createDerivFilter()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::cuda::createDerivFilter 是 OpenCV CUDA 模块中的一个工厂函数,用于创建一个计算图像导数的滤波器。这个滤波器可以用来计算图像…

AWS関連職種向け:日本語面接QA集

1. 自己紹介(じこしょうかい) Q:簡単に自己紹介をお願いします。 A: はい、〇〇と申します。これまで約4年間、主にAWSを基盤としたインフラ設計・構築・運用に従事してまいりました。VPCやEC2、RDS、S3などの基本サービスの設計…

(01)华为GaussDB((基于PostgreSQL))高斯数据库使用记录,dbeaver客户端配置高斯驱动,连接高斯数据库

高斯数据库是华为推出的一款基于PostgreSQL的企业级数据库产品,客户端使用通用的dbeaver dbeaver客户端配置高斯驱动 建议使用 dbeaver24.3.1及以上客户端,选择模式后执行sql会绑定模式名,如果使用dbeaver23.2版本,选择模式后执…

ARM Linux远程调试

准备 虚拟机既能ping通开发板,又能ping通外网,还要能ping通Windows主机(如果你有上位机通信(tftp、vsftp、ssh)的需求) VMware 添加网络适配器2用作桥接网卡,原有的网络适配器保持为NAT模式 打开虚拟网络编辑器,配置VMnet0为桥接模式,外部连接设置为Realtek PCIe G…

day24Node-node的Web框架Express

1. Express 基础 1.1 什么是Express node的web框架有Express 和 Koa。常用Express 。 Express 是一个基于 Node.js 的快速、极简的 Web 应用框架,用于构建 服务器端应用(如网站后端、RESTful API 等)。它是 Node.js 生态中最流行的框架之一,以轻量、灵活和易用著称。 …

让MySQL更快:EXPLAIN语句详尽解析

前言 在数据库性能调优中,SQL 查询的执行效率是影响系统整体性能的关键因素之一。MySQL 提供了强大的工具——EXPLAIN 语句,帮助开发者和数据库管理员深入分析查询的执行计划,从而发现潜在的性能瓶颈并进行针对性优化。 EXPLAIN 语句能够模…

[CSS3]rem移动适配

前言 什么是移动端适配? 让页面的元素在屏幕尺寸变化时, 同比放大或缩小 移动适配的方案 rem:目前多数企业在用的解决方案 vw/vh:未来的解决方案 rem 体验rem适配 目标: 能够使用rem单位设置网页元素的尺寸 网页效果: 屏幕宽度不同,网…

向量数据库及ChromaDB的使用

什么是向量数据库? 向量数据库(Vector Database),也叫矢量数据库,主要用来存储和处理向量数据。 在数学中,向量是有大小和方向的量,可以使用带箭头的线段表示,箭头指向即为向量的方…

CodeBuddy实现pdf批量加密

本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 前言 在信息爆炸的时代,PDF 格式因其跨平台性和格式稳定性,成为办公、学术、商业等领域传递信息的重要载体。从机密合同到个人隐私文档&#xff0c…

运行打印Hello World启动了多少线程?

序言 看网上说阿里二面问到了一个看似最简单且没有标准答案的一个问题,所有学习编程都是从打印hello World开始的,那运行打印启动了多少个线程? 启动了多少线程? 在运行一个简单的 “Hello World” 程序时,启动的线…

java交易所,多语言,外汇,黄金,区块链,dapp类型的,支持授权,划转,挖矿(源码下载)

目前这套主要是运营交易所类型的,授权的会贵点,编译后的是可以直接跑的,图片也修复了,后门也扫了 都是在跑的项目支持测,全开源 源码下载:https://download.csdn.net/download/m0_66047725/90887047 更多…

(已开源-CVPR2024) RadarDistill---NuScenes数据集Radar检测第一名

本文介绍一篇Radar 3D目标检测模型:RadarDistill。雷达数据固有的噪声和稀疏性给3D目标检测带来了巨大挑战。在本文中,作者提出了一种新的知识蒸馏(KD)方法RadarDistill,它可以通过利用激光雷达数据来提高雷达数据的表征。RadarDistill利用三…

【MySQL】 数据库基础数据类型

一、数据库简介 1.什么是数据库 数据库(Database)是一种用于存储、管理和检索数据的系统化集合。它允许用户以结构化的方式存储大量数据,并通过高效的方式访问和操作这些数据。数据库通常由数据库管理系统(DBMS)管理&…

MongoDB 错误处理与调试完全指南:从入门到精通

在当今数据驱动的世界中,MongoDB 作为最流行的 NoSQL 数据库之一,因其灵活的数据模型和强大的扩展能力而广受开发者喜爱。然而,与任何复杂系统一样,在使用 MongoDB 过程中难免会遇到各种错误和性能问题。本文将全面介绍 MongoDB 的…

【C++】stack,queue和priority_queue(优先级队列)

文章目录 前言一、栈(stack)和队列(queue)的相关接口1.栈的相关接口2.队列的相关接口 二、栈(stack)和队列(queue)的模拟实现1.stack的模拟实现2.queue的模拟实现 三、priority_queu…

ubuntu中上传项目至GitHub仓库教程

一、到github官网注册用户 1.注册用户 地址:https://github.com/ 2.安装Git 打开终端,输入指令git,检查是否已安装Git 如果没有安装就输入指令 sudo apt-get install git 二、上传项目到github 1.创建项目仓库 进入github主页,点击号…

windows 下用yolov5 训练模型 给到opencv 使用

windows 使用yolov5训练模型,之后opencv加载模型进行推理。 一,搭建环境 安装 Anaconda 二,创建虚拟环境并安装yolov5 conda create -n yolov5 python3.9 -y conda activate yolov5 git clone https://github.com/ultralytics/yolov5 cd …

Spark集群架构解析:核心组件与Standalone、YARN模式深度对比(AM,Container,Driver,Executor)

一、核心组件定义与关系拆解 1. ApplicationMaster(AM) 定义:YARN 框架中的应用管理器,每个应用程序(如 Spark 作业)对应一个 AM。职责: 向 YARN 的 ResourceManager 申请资源(Con…