Redis主从复制,是指在Redis集群里面,Master节点和Slave节点数据同步的一种机制。
简单来说就是把一台Redis服务器的数据,复制到其他Redis服务器中。
其中负责复制数据的来源称为master,被动接收数据并同步的节点称为slave
在Redis里面,提供了全量复制和增量复制两种模式。
全量复制一般发生在Slave节点初始化阶段,这个时候需要把master上所有数据都复制一份。
具体的工作原理是:
Slave向Master发送SYNC命令,Master收到命令以后生成数据快照
把快照数据发送给Slave节点,Salve节点收到数据后丢弃旧的数据,并重新载入新的数据
需要注意,在主从复制过程中,Redis并没有采用实现强数据一致性,因此会存在一定时间的数据不一致问题。
增量复制,就是指Master收到数据变更之后,把变更的数据同步给所有Slave节点。
增量复制的原理是,Master和Slave都会维护一个复制偏移量(offset),用来表示Master向Slave传递的字节数。
每次传输数据,Master和Slave维护的Offset都会增加对应的字节数量。
Redis只需要根据Offset就可以实现增量数据同步了。