1.RDB持久化机制介绍
简单来说就是将redis内存中的数据生成快照存储到硬盘中去。
2.RDB持久化机制执行流程
1)执行bgsave的时候,redis的主进程会检查是否存在子进程在执行rdb持久化任务,如果有的话直接返回。
2) 如果没有的话redis主进程会fork一个子进程出来去执行rdb持久化任务操作,fork操作的时候会阻塞主进程,fork操作完成后会发消息给主进程,从而不再阻塞主进程,但是主进程被阻塞的时候 并不影响,它会开辟出一个临时的内存空间来存储写入的数据,等fork操作完成后在合并数据,释放临时内存。
3)redis子进程会根据主进程的内存数据生成一份快照文件,生成结束后会用现在的这份替换掉之前的那一份快照文件。
4)redis子进程会通知redis主进程快照生成完毕
3.AOF持久化机制介绍
简单来说AOF持久化机制就是将redis的每一条写入数据的命令写入到aof日志文件中去,服务重启的时候会根据aof日志文件里面的数据来恢复数据。
4.AOF执行流程
1)所有的写入命令先写入到os cache中
2)每隔一秒钟强制调用一次操作系统的fsync操作,将os cache中的数据刷到aof文件里面去。
3)当aof文件大到了一定程度的时候,会触发redis的rewrite操作,会重新将内存中的数据生成一份aof文件,然后将老的给删除
4)重启的时候会根据aof日志文件来恢复数据