redis复制

redis的复制主要是通过同步(sync)和 命令传播搞定的。

同步(sync):即是在从服务器想主服务器发送同步请求,主服务器接收请求,然后执行bgsave命令,在后台生成一个rdb文件,同时将后续命令写入缓冲区,当rdb文件生成,给从服务器。

命令传播: rdb发送完成后,会将缓冲区的命令,发送给从服务器,从而达到主从一致的状态。

2.8以前的sync命令有一个缺陷,主从服务断开在重连,会在促发一次sync,这样很浪费资源,因为主服务器生成rdb,传输暂用网络资源,同时从服务器在载入rdb文件时,会阻塞会拒绝所有请求命令。


2.8修改了这个问题,采用psync命令来同步,psync 会同步断网后的命令请求,这样不用生成rdb传输。

psync同步有三个部分组成

1、主从的复制偏移量

按字节算,主服务像从服务传输时候会记录传输字节。比如传输1000字节,在传输33字节,偏移量就是1033字节,从服务器也是1033字节,如果从服务器是1000字节,说明33字节的数据没有同步成功,在次连接后只是传输33字节的数据。

2、复制缓冲区

默认是1M,如果操作1M,还是会生成rdb文件同步的,所以要合理设置这个值。

主在发送命令时候,会同时写入这个缓存区,缓冲区是一个先进先出的队列,里面记录了发送信息,并且每个字符都有自己的偏移量(递增的),这样就能按丢失的偏移量来同步数据了

3、从服务器会记录主服务的进程id,如果主服务器重启等原因,从服务会比对 进程id,如果不对sync请求,同步rdb文件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值