SAVE (服务被阻塞)和 BGSAVE(子进程执行):
BGSAVE时,再次执行SAVE或者BGSAVE会被拒绝,因为存在资源竞争,BGREWRITE会被延迟到BGSAVE执行完成后执行,虽然两者都会fork子进程执行,但是为了避免同时大量磁盘IO所以一个一个来。
数据加载:
Dirty 和lastsave:
Redis发服务周期性操作函数serverCorn默认每隔100毫秒就会执行一次,该函数用于对正在运行的服务器进行维护,它的其中一项工作就是检查save所设置的保存条件是否已经满足,如果满足则执行BGSAVE命令
示意图:
RDB文件组成:
AOF持久化:
AOF重写是读取当前服务器状态生成命令和现有的aof文件无关,采用子进程的方式执行,避免服务阻塞,并创建了AOF重写缓冲区解决重写时数据库发生更改