Redis主从同步的原理

单节点Redis的并发能力是有上限的,要进一步提高redis的并发能力,就需要搭建主从集群,实现读写分离。一般都是一主多从,主节点负责写数据,从节点负责读数据 

主从同步有两种同步:

1、全量同步:指的是,从节点因为宕机,重启,或新增的从节点等需要从主节点同步全量数据的同步场景

2、增量同步:指的是,从节点定时从主节点获取过去一段时间内写入的数据

一、主从全量同步

全量同步过程:

1、从节点请求主节点同步数据,需要携带两个信息:replication id和offset

replication id如果从节点和主节点的不一致,说明是第一次同步(也就是说需要全量同步)

offset 偏移量是一个自增的整数值,也可以理解成同步数据的版本号或者时间点,主节点每次写入数据都会增加offset,如果offset值比从节点的offset值大,那么就需要做增量同步

2、主节点判断是否是第一次请求,是第一次就先返回Master节点的数据版本信息(replication id和offset同步给从节点,从节点保存)

3、主节点执行bgsave,生成RDB文件,并发送给从节点,让从节点从RDB文件里读取数据

4、在生成RDB文件期间,主节点的写入操作会保存到一个repl_baklog(一个日志文件)中

5、再把这个日志文件,同步给从节点进行同步,这样就实现了全量的主从同步

二、增量同步

主从节点进行增量同步时:

1、从节点请求主节点同步数据,主节点判断是不是第一次请求,不是则获取从节点的offset值

(如果是第一次同步,那么就全量同步)

2、主节点拿到从节点的offset值后,和自己的offset值进行对比,如果比从节点offset值大,那么就会从命令日志repl_baklog文件中获取从节点offset值到主节点offset这之间写入的数据,发给从节点进行数据同步

例如,当主节点的offset是80,而从节点的数据是50,那么主节点就把offset50之后的数据都给从节点进行同步,这就是增量同步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值