从Redis 2.8开始,在主从复制过程中如果连接断开,主从重新连接之后会从中断处继续进行复制,而不必重新同步。 其工作原理如下:
主节点会为复制流维护一个内存缓冲区(in-memory backlog),除此之外主从节点还会维护两个变量值:复制偏移量(replication offset)和主节点运行ID(master run id)。当连接断开时,从节点会重新连接上主节点,然后请求继续复制,如果主从节点的两个运行ID(master run id)相同,并且指定的偏移量在内存缓冲区中还有效, 则复制就会从上次中断的点开始继续,如果其中有一个条件不满足,则会进行完全重新同步,即全量复制,而2.8版本之前没有断点续传功能,只要断开就会直接进行全量复制。