redis主从数据同步可以分为全量同步和部分同步。
每个redis启动时都会生成一个随机字符串RID(replication ID ),从节点怎么判断需要同步多少呢?
通过偏移量offset来确定。主节点每次有数据写入,都会在offset上加上写入的字节长度,所以从节点通过比较RID和offset就能确定需要同步多少数据。
部分同步:
1.从节点保存的主节点RID与主节点的RID一致时,从节点非第一次同步,通过offset把这部分需要同步的数据放入缓冲区,然后异步同步到从节点。
全量同步:
1.当从节点第一次启动,进行数据同步时,是全量同步的。
2.当从节点保存的主节点RID与主节点的RID不一致时,说明主节点可能宕机或重启过啥的,数据已经不一致了,所以需要重新全量同步,同时删除掉旧的数据。
3.当部分同步需要同步的数据超过了缓存区的大小限制时,采用全量同步。
注意:RDB和AOF的复制可以同时进行的。