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

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

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.lryc.cn/news/2387159.html

相关文章:

  • GitLab 备份所有仓库(自动克隆)
  • [浏览器]缓存策略机制详解
  • Vue修饰符全解析
  • OpenCV CUDA 模块图像过滤-----创建一个计算图像导数的滤波器函数createDerivFilter()
  • 计算机视觉与深度学习 | Python实现CEEMDAN-ABC-VMD-DBO-CNN-LSTM时间序列预测(完整源码和数据)
  • AWS関連職種向け:日本語面接QA集
  • 【Macos】安装前端环境rust+node环境
  • (01)华为GaussDB((基于PostgreSQL))高斯数据库使用记录,dbeaver客户端配置高斯驱动,连接高斯数据库
  • ARM Linux远程调试
  • day24Node-node的Web框架Express
  • Webpack和Vite构建工具有什么区别?各自的优缺点是什么
  • 让MySQL更快:EXPLAIN语句详尽解析
  • 基于谷歌浏览器的Web Crypto API生成一对2048位的RSA密钥(公钥+私钥),并以JSON格式(JWK)打印到浏览器控制台
  • [CSS3]rem移动适配
  • 向量数据库及ChromaDB的使用
  • CodeBuddy实现pdf批量加密
  • 编程中优秀大模型推荐:特点与应用场景深度分析
  • orm详解--查询执行
  • 运行打印Hello World启动了多少线程?
  • C++项目中调用C#DLL的的方式
  • 咳嗽止咳药笔记250526 , 磷酸苯丙哌林 , 喷托维林 , 右美沙芬
  • vue pinia 独立维护,仓库统一导出
  • 网络的协议和标准
  • 十六进制字符转十进制算法
  • 跟Gemini学做PPT:汇报背景图寻找指南
  • java交易所,多语言,外汇,黄金,区块链,dapp类型的,支持授权,划转,挖矿(源码下载)
  • (已开源-CVPR2024) RadarDistill---NuScenes数据集Radar检测第一名
  • 【MySQL】 数据库基础数据类型
  • 中小企业AI算力如何选?【显卡租赁】VS【自建服务器】
  • OpenHarmony 4.1版本应用升级到5.0版本问题记录及解决方案