Redis持久化之RDB

RDB持久化是把当前进程数据生成快照保存到硬盘,触发方式分为手动触发和自动触发。
手动触发
save命令:会阻塞当前Redis线程,知道RDB过程结束,如果数据量大,会阻塞很长时间,线上环境不建议使用。
bgsave命令:Redis进程执行fork操作创建子进程,RDB过程有子进程负责,完成后自动结束。这样阻塞只发生在fork阶段,一般情况很短。
很明显bgsave是对save做出的优化处理,现在一般都采用bgsave,save命令基本无人使用了。
自动触发
在redis的配置文件中配置 save m n 表示在m秒内存在n次修改时,自动触发bgsave。

流程说明

bgsave的流程见下图


1.执行bgsave命令,Redis父进程判断当前是否存在执行的子进程,如RDB/AOF子进程,如果存在bgsave命令直接返回。
2.父进程执行fork操作创建子进程,fork操作过程中父进程会阻塞。
3.父进程fork完成后,不在阻塞父进程,可以继续其他操作。
4.子进程创建RDB文件,根据父进程内存生成临时快照文件,完成后对原有文件进行原子替换。
5.进程通知父进程完成操作。

猜你喜欢

转载自blog.csdn.net/roy324/article/details/79567355