Prince_ZaZa
Go big or go home
posts - 33,comments - 0,views - 7058

一、RDB持久化

  1. RDB持久化是使用快照的方式将数据持久化到磁盘里,首先由bgsave命令发起.
  2. bgsave命令首先回调用父进程去创建一个子进程(fork命令),如果已经创建有子进程,则返回,否侧创建一个子进程用于持久化.
  3. 创建子进程的目的是用于持久化,因为bgsave所支持的RDB持久化造作会阻塞进程,如果阻塞了主进程,将影响性能.
  4. 子进程将父进程的数据存储到RDB文件中,此时父进程可以执行其他的操作.
  5. 子进程在读取(存储)父进程的数据时,父进程在执行其他操作,这一过程是基于操作系统的CopyOnWrite机制来解决并发问题的.

二、AOF持久化

  1. AOF持久化是基于日志文件来实现,持久化的命令会追加到一个aof_buf缓冲区里面,再经过一段时间后,再将其刷到磁盘中的AOF文件中.
  2. 压缩文件操作由bgrewriteaof命令发起,与RDB持久化类似,需要调用父进程,创建子进程进行持久化操作.
  3. 成功fork子进程后,子进程将目前的数据快照写入一个新的AOF文件里面,此时父进程也在执行其他的操作,父进程执行的新操作(与子进程的数据差)将会保存到一个rewrite_buf缓冲文件.
  4. 当新AOF文件将要替换旧的AOF文件时,会将父进程与子进程的数据差部分(rewrite_buf)文件中的数据刷新的新AOF文件中,再进行替换更新.

三、RDB-AOF混合持久化

在AOF重写时,县执行bgsave生成RDB文件,再将新处理的命令追加到AOF文件的末尾.

posted on   Prince_ZaZa  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示