Redis中的AOF重写到底是怎么一回事

2024-02-23 11:28

本文主要是介绍Redis中的AOF重写到底是怎么一回事,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先我们知道AOF和RDB都是Redis持久化的方法。RDB是Redis DB,一种二进制数据格式,这样就是相当于全量保存数据快照了。AOF则是保存命令,然后恢复的时候重放命令。

AOF随着时间推移,会越来越大,因为不断往里追加命令。所以需要重写。重写解决了什么呢?就是删去了一些没用的指令,比如有一条SET a 100,然后后面又有一条SET a 200,那前一条指令就是没用的,只保留后面的即可。重写就是重新生成AOF操作命令记录的过程,还会顺带缩短重放时间。

AOF重写流程

一处拷贝

fork一个子进程,和主进程共享Redis物理内存,把这些内存里的数据写入新的AOF文件

两处缓冲

重写时候要是有新的写入命令,主进程会把他们写入到两个缓冲里——AOF缓冲和AOF重写缓冲。前者是为了给旧AOF文件,保证重写过程宕机了也能根据旧的AOF文件恢复。后者是为了给新的AOF文件,重写拷贝完内存区数据后将这部分增量数据一并写入新AOF文件。

这里很多人都有一个误区,重写时候是根据旧AOF命令来的,实际上并不是!!!
AOF重写触发后,会fork一个子进程,子进程遍历当前Redis DB中所有数据,然后再以字符串命令的形式写入新AOF文件中。等这一步执行完了后,再将AOF重写缓存区里的增量数据追加进新的AOF文件里。

全程没有拷贝AOF缓存区,也和旧AOF文件没关系!!!

混合持久化

这是对AOF重写的一个优化(redis5之后的默认方式),即将当前的数据以RDB形式写进新的AOF文件,追加的重写缓冲区数据正常写进新的AOF文件,二者共同构成新AOF文件来替代掉旧AOF文件。这样有效降低了AOF文件的体积,并且从数据恢复角度上也变快了。

值得注意的是混合持久化仍然是AOF而非RDB和AOF双开,数据恢复过程如下:
在这里插入图片描述

MP-AOF

MP-AOF是redis7提出来的,因为混合持久化还是有不足的,因为本质上还是没解决一些问题。

不足

主进程要写两个缓冲,aof重写缓冲和aof缓冲,这是两个重复的操作,浪费CPU和内存。同时父进程在AOF重写缓冲里的数据是通过管道传递给子进程的,然后子进程再将其追加写入AOF,这也会造成CPU的额外开销。两个相同的缓冲的内容还得写到新旧日志里,是额外的磁盘开销(因为新日志替换旧日志前还是需要刷盘的)

做法

全程Multi-Part AOF,就是将AOF拆分为Base AOF和Incr AOF了。Base AOF是fork子进程那一刻的RDB快照(redis5就默认开启混合持久化了,redis7自然也是开启了。假设关闭的话这里还是保存的命令)。Incr AOF是重写过程中,主进程写AOF缓冲区的指令。然后有一个Manifest文件,会记录当前最新的Base AOF和Incr AOF是哪个文件,旧的会被标记然后异步删除(UNLINK)。

这篇关于Redis中的AOF重写到底是怎么一回事的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/738464

相关文章

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

webm怎么转换成mp4?这几种方法超多人在用!

webm怎么转换成mp4?WebM作为一种新兴的视频编码格式,近年来逐渐进入大众视野,其背后承载着诸多优势,但同时也伴随着不容忽视的局限性,首要挑战在于其兼容性边界,尽管WebM已广泛适应于众多网站与软件平台,但在特定应用环境或老旧设备上,其兼容难题依旧凸显,为用户体验带来不便,再者,WebM格式的非普适性也体现在编辑流程上,由于它并非行业内的通用标准,编辑过程中可能会遭遇格式不兼容的障碍,导致操

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案,可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器,将网站内容缓存到这些服务器上,并通过智能路由技术将用户的请求引导到最近的服务器上,以提供更快的访问速度和更好的网络性能。 速盾高防CDN主要采用以下几种方式来解决网站攻击: 分布式拒绝服务攻击(DDoS)防护:DDoS攻击是一种常见的网络攻击手段,攻击者通过向目标网

禁止复制的网页怎么复制

禁止复制的网页怎么复制 文章目录 禁止复制的网页怎么复制前言准备工作操作步骤一、在浏览器菜单中找到“开发者工具”二、点击“检查元素(inspect element)”按钮三、在网页中选取需要的片段,锁定对应的元素四、复制被选中的元素五、粘贴到记事本,以`.html`为后缀命名六、打开`xxx.html`,优雅地复制 前言 在浏览网页的时候,有的网页内容无法复制。比如「360

Redis中使用布隆过滤器解决缓存穿透问题

一、缓存穿透(失效)问题 缓存穿透是指查询一个一定不存在的数据,由于缓存中没有命中,会去数据库中查询,而数据库中也没有该数据,并且每次查询都不会命中缓存,从而每次请求都直接打到了数据库上,这会给数据库带来巨大压力。 二、布隆过滤器原理 布隆过滤器(Bloom Filter)是一种空间效率很高的随机数据结构,它利用多个不同的哈希函数将一个元素映射到一个位数组中的多个位置,并将这些位置的值置

Lua 脚本在 Redis 中执行时的原子性以及与redis的事务的区别

在 Redis 中,Lua 脚本具有原子性是因为 Redis 保证在执行脚本时,脚本中的所有操作都会被当作一个不可分割的整体。具体来说,Redis 使用单线程的执行模型来处理命令,因此当 Lua 脚本在 Redis 中执行时,不会有其他命令打断脚本的执行过程。脚本中的所有操作都将连续执行,直到脚本执行完成后,Redis 才会继续处理其他客户端的请求。 Lua 脚本在 Redis 中原子性的原因