浅谈redis中aof的原理和实现方式

浅谈redis中aof的原理和实现方式,第1张

aof为append on file。它更类似MySQL中的sql文件,而ROB则类似于将某一时刻内存中redis的全体状态被分别存储到磁盘中。

aof会将内存中所有对数据库进行的增删改 *** 作纪律下来,放入内存中的一个缓冲区,然后再由缓冲区保存到磁盘。等到要用的时候就把语句一条条的取出来,执行它

由于很多 *** 作是重复的,如10 时刻设置a等于hello,20 时刻设置a等于world。那么仅需要保存world,前面的修改均不许需要关心,这就是aof文件的重写,可以减少很多文件冗余。

重写的机制其实就是把数据库的所有数据全部遍历一次,并对其进行判断,并使用append语句,使得它变为set,push等等一系列的字符串语句。无非是对数据类型进行挨个的if判断然后设置不同的新增语句。由于添加的限制,redis一次只能最多添加64条数据。超过的话会有(n/64向上取整 条)新增语句来表示

后台重写:由于重写需要花费较多时间,在这个时间内不能处理其他 *** 作。所以有了后台重写。后台重写内父进程用于梳理其他 *** 作,而子进程负责aof文件的重写。

在对文件进行aof持久化时需要一定的机制,有如下几种

同步即将刚刚发生的 *** 作写入缓冲区

aof的载入 *** 作是这样的:

会创建一个无法 *** 作的伪客户端,他不带有任何网络连接。

这个客户端会负责执行aof文件中的命令,一直到aof文件被循环完毕。

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/723238.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存