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

Redis AOF重写原原理

在这里插入图片描述
在这里插入图片描述

重写aof之前
appendonly.aof.1.base.aof
appendonly.aof.1.incr.aof
appendonly.aof.manifest
重写aof 一次
appendonly.aof.2.base.aof 大小变化
appendonly.aof.2.incr.aof 大小o
appendonly.aof.manifest 大小不变

AOF文件重写并不是对原文件进行重新整理,而是直接读取服务器现有的键值对,然后用一条命令去代替之前记录这个键值对的多条命令
在这里插入图片描述
AOF重写触发机制:
①自动触发
通过redis.conf中
auto-aof-rewrite-percentage:100 # 默认100
auto-aof-rewrite-min-size:64mb # 默认redis会记录上次重写aof大小,默认配置是当aof文件大小是上次rewrite后大小的一倍且文件大于64mb时触发
②手动触发
bgrewriteaof

重写原理
  1. 在重写开始前,redis会创建一个重写子进程,这个子进程会读取现有的AOF文件,并将其包含的指令进行分析压缩并写入一个临时文件中
  2. 与此同时,主进程会将新接受到的写指令一边累积到内存缓存区中,一边继续写入到原有的AOF文件中,这样做是保证原有的AOF文件的可用性,避免在重写过程中出现意外
  3. 当 重写子进程 完成重写工作后,它会给父进程发一个信号,父进程收到信号后就会将内存中缓存的写指令追加到新的AOF文件中
  4. 当追加结束后,redis就会用新AOF文件来代替旧的AOF文件,之后再有新的写指令,就都会追加到新的AOF文件中
  5. 重写aof文件的操作,并没有读取旧的aof文件,而是将整个内存中的数据库内容用命令的方式重写了一个新的aof文件。

在这里插入图片描述

http://www.lryc.cn/news/186945.html

相关文章:

  • es6.x和es7.x如何创建索引?
  • 《DevOps 精要:业务视角》- 读书笔记(三)
  • C语言——文件操作_学习笔记
  • cap分布式理论
  • asp.net core 如何统一json序列化格式
  • DALL·E 3 ChatGPT-4的梦幻联动
  • linux,write:xxx has messages disabled 与 Ubuntu多用户同时登录的问题 ubuntu 20.04
  • ffmpeg批量转换ape/wav为mp3 (linux, mac适用)
  • 自动生成JPA bean及repository生成简陋工具
  • vue3+vite+uniapp 封装一个省市区组件
  • OpenCV报错:AttributeError: module ‘cv2.cv2‘ has no attribute ‘SIFT_create‘
  • 通用监控视频web播放方案
  • C++基础知识3
  • 【配置vscode编写python代码并输出到外部控制台】
  • RK3588开发笔记-MIPI-CSI接口视频解码芯片XS9922B调试
  • DVWA -xss
  • C语言编程实现只有一个未知数的两个多项式合并的程序
  • C# .net创建一个MVC框架工程
  • Deep learning of free boundary and Stefan problems论文阅读复现
  • LeetCode 1277. 统计全为 1 的正方形子矩阵【动态规划】1613
  • 测试部门来了个00后卷王之王,老油条感叹真干不过,但是...
  • 360 G800行车记录仪,不使用降压线如何开机,8芯插头的定义。
  • vue2踩坑之项目:Swiper轮播图使用
  • python经典百题之分桃子
  • vscode ssh linux C++ 程序调试
  • VUE和Angular有哪些区别?
  • 云原生边缘计算KubeEdge安装配置(二)
  • SQL多表设计--一对多(外键)
  • Stm32_标准库_9_TIM
  • 283. 移动零