复制原理
- 1.如果设置了一个Slave,无论是第一次连接还是重连到Master,它都会发出一个SYNC命令;
- 2.当Master收到SYNC命令之后,会做两件事:
- a) Master执行BGSAVE,即在后台保存数据到磁盘(rdb快照文件);
- b) Master同时将新收到的写入和修改数据集的命令存入缓冲区(非查询类);
- 3.当Master在后台把数据保存到快照文件完成之后,Master会把这个快照文件传送给Slave,而Slave则把内存清空后,加载该文件到内存中;
- 4.而Master也会把此前收集到缓冲区中的命令,通过Reids命令协议形式转发给Slave,Slave执行这些命令,实现和Master的同步;
- 5.Master/Slave此后会不断通过异步方式进行命令的同步,达到最终数据的同步一致;
- 6.需要注意的是Master和Slave之间一旦发生重连都会引发全量同步操作。但在2.8之后版本,也可能是部分同步操作。