前面两个章节我们讲了数据持久化的两种方式:AOF和RDB,通过这两种方式可以单个实例的数据的完整性,但是当redis实例出问题时,数据就会丢失了,针对这种情况提出了主从结构:
并且在主从结构中采用读写分离:写只能在主上 ,这就涉及到主从间数据的一致性
redis中主从数据的同步主要分为以下步骤:
replicaof命令用于初始同步数据
1、主生成RDB文件,全量同步数据给从,在此期间新的数据写到缓冲区中,再次同步缓冲区中数据
2、主从之间建立起长连接 再有新数据增加 通过长连接发送增量数据
可能会出现的问题:
当主从间连接断开后再次连接上如何同步数据?
其实在主从实例上都分别维护了自己的offset,每次从机都会向主机发送offset,主机会根据两者的差距来选择同步的数据量,
存储offset的数据结构是一个环形,长时间断开可能会造成数据覆盖,出现这种情况主机会选择全量同步数据