请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于AOF日志重写问题

老师您讲的第三点,往新的AOF中同步增量变动具体过程是怎样的。在子进程把新的AOF写到一个临时文件里的同时,主进程将新的变动写到内存和原来的AOF中,那这时系统中的变动在临时文件和旧的AOF文件中都会记录对吧,最后新的AOF文件同步变动的时候是将旧的AOF文件中的内容同步压缩到新的AOF文件中还是其他的操作?

正在回答 回答被采纳积分+3

插入代码

1回答

翔仔 2021-07-13 23:58:18

同学好,

AOF重写并不是在主线程中,而是redis会fork一个bgrewriteaof子进程,这样就不会阻塞主线程执行了。

fork子进程的过程是要在主线程中执行的,这时候主线程需要拷贝内存页表,这个页表记录了虚拟内存和物理内存的映射关系,如果内存很大,拷贝过程花费的时间就会很大,而这个拷贝过程中主线程是阻塞的。

fork子进程完成后,主线程和bgrewriteaof子进程使用的是同一块儿内存空间,这时如果有新的写请求到来,并且写命令是已经存在的key,主线程会使用CopyOnWrite的方式,为这个key申请新的内存空间,进行写操作。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信