Redis 设计与实现---第九章:数据库持久化

SAVE (服务被阻塞)和 BGSAVE(子进程执行):

      BGSAVE时,再次执行SAVE或者BGSAVE会被拒绝,因为存在资源竞争,BGREWRITE会被延迟到BGSAVE执行完成后执行,虽然两者都会fork子进程执行,但是为了避免同时大量磁盘IO所以一个一个来。

 

Redis 设计与实现---第九章:数据库持久化_第1张图片

数据加载:

Redis 设计与实现---第九章:数据库持久化_第2张图片

Dirty 和lastsave:

Redis 设计与实现---第九章:数据库持久化_第3张图片

Redis 设计与实现---第九章:数据库持久化_第4张图片

Redis发服务周期性操作函数serverCorn默认每隔100毫秒就会执行一次,该函数用于对正在运行的服务器进行维护,它的其中一项工作就是检查save所设置的保存条件是否已经满足,如果满足则执行BGSAVE命令

示意图:

Redis 设计与实现---第九章:数据库持久化_第5张图片

RDB文件组成:

Redis 设计与实现---第九章:数据库持久化_第6张图片

AOF持久化:

Redis 设计与实现---第九章:数据库持久化_第7张图片

Redis 设计与实现---第九章:数据库持久化_第8张图片

AOF重写是读取当前服务器状态生成命令和现有的aof文件无关,采用子进程的方式执行,避免服务阻塞,并创建了AOF重写缓冲区解决重写时数据库发生更改

Redis 设计与实现---第九章:数据库持久化_第9张图片

你可能感兴趣的:(redis,redis)