Redis的RDB文件快照

一、 对哪些数据做快照

做的是全量快照(增量快照指的是第一次做全量快照,之后增量文件只记录每个时刻对数据的修改,会导致增量文件过大)

二、 快照时会阻塞主线程吗

利用写时复制技术(fork一个子进程进行快照,期间对于主线程中的数据的修改操作会先拷贝出该数据,然后再拷贝的数据上修改,保证快照截取的是一个时间点的数据),保证不影响主进程中的数据读写。

fork操作会拷贝一份和主进程一模一样的子进程,但是它们拥有的内存空间独立,内存中的数据是一样的,两个进程可以各自独立地操作它们内存中的数据。

利用写时复制技术子进程不影响主进程运行,但是fork进程时,主进程无法提供服务,并且子进程将数据写入磁盘需要时间,Redis为了避免多个fork子进程阻塞,只有等上一个fork的子进程完成了RDB操作后才能再次fork子进程进行RDB备份(同一时间只执行一个快照)。

三、 多久执行一次RDB快照

一般结合AOF和RDB使用,AOF作为两次RDB之间的增量文件,记录两次RDB期间发生的操作指令,第二次全量备份时在上一次全量备份的基础上执行AOF日志即可(会在AOF文件的开头写入上次快照完的位置),完成后将AOF文件清空,就不会导致AOF日志的增量信息过大。

参考文章:

https://time.geekbang.org/column/article/272852

你可能感兴趣的:(Redis学习进阶,redis,数据库开发)