Redis主从复制的原理(简述)

作为一个一主多从这样的一个结构设计,那么他的数据同步是非常一个重要的点。而Redis的同步设计可以分成全量同步和增量同步

全量同步

全量同步发生在Slave初始化的时候,也就是如上图:1-1和1第一次建立连接,1-2和1-1第一次建立连接的时候就会发送PSYNC命令:

这个命令过程如下:

主服务器执行BGSAVE命令-->生成RDB快照文件-->向从服务器发送RDB文件并且记录写命令-->从服务器收到后把自己原先的数据全丢了载入快照文件的数据-->载入完成后在执行记录的写命令写入到缓存里面。

 

增量同步

增量同步时Salve初始化后正常运行过程中,只要主服务器执行了一个写的命令,那么主服务器就和向从服务器发送一个一模一样的写命令,将数据写入缓存。

 

部分增量同步:

在Redis 2.8之前时SYNC的命令,这个命令时没有增量同步的,不管是什么环节,也就是每次都是全量同步,比较消耗资源,而且效率不高,并且到了如果数据量大的话,突然有个Salve宕机后重新连接,就会和多个服务器进行连接同步数据,可能会导致IO剧增宕机。

 

在2.8后呢就优化成使用PSYNC命令了,只有服务器初始化的时候全量同步,之后正常运行过程中都是增量同步。并且在这个过程中会维护主从服务器的偏移量和ID,如果这时候有个Slave宕机重新连接,会判断这个重新连接的服务器和主服务器是否时同一个ID,如果相同,就会找到主服务器的和从服务器的偏移量的位置,也就是上次宕机断开的点继续复制后面的数据。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值