Redis的三种集群结构

redis有三种集群方式:主从复制,哨兵模式和集群。

一,主从复制

      主从复制是指让一个服务器去复制另一个服务器的数据,使得双方的数据保存一致,其中被复制的服务器为主服务器,复制的服务器为从服务器。当主服务器的数据发生改变时,主服务器会通知从服务器,保存数据的一致性。

      在Redis中,使用slaveof命令来执行主从复制。

(一)旧版的主从复制实现

      在旧版中,Redis的复制功能分为两步:同步和命令传播。

      同步操作用于将从服务器的数据状态更新为主服务器的数据状态。

      命令传播操作用于在主服务器的数据被修改时,通知从服务修改对应的数据,从而达到数据一致。

      从服务器向主服务器发送slaveof命令后:

      1. 从服务器向主服务器发送sync命令,主服务器会执行bgsave命令,在后台生成一个RDB文件,并用一个缓冲区记录从现在开始的所有写命令。

      2. 从服务器接收并载入RDB文件,更新自己的数据。更新完成之后,主服务器会发送缓冲区中的命令,从服务器执行这些命令,最终主从服务器的数据保存一致。

      3. 主从服务器保存一致后,当主服务器的数据发生修改时,会对从服务器执行命令传播操作,即将修改命令发送给从服务器,使得数据继续保存一致。

缺陷:

      旧版的主从复制的实现有个很大的缺陷:在从服务器发生断线并重连之后,主从服务器之间会重新执行同步操作,即将主服务器的所有数据重新传到从服务器中。但实际上,在重连之后,主从服务器之间可能只有少量数据不同,大部分保存一致。这就使得有很多数据是无效的,效率极低。

(二)新版的主从复制实现

      为了解决主从复制效率底下的问题,Redis从2.8开始,使用psync命令替代sync。

      psync命令有两种模式:完整重同步和部分重同步。

      完整重同步用于初次复制情况,和同步操作一致。

      部分重同步用于断线重连后复制情况。

      部分重同步的实现:

      部分重同步,当从服务器断线重连后,如果条件允许,主服务器可以将从服务器断线期间执行的写命令发送给从服务器,从服务器只要接收并执行命令,就可以更新数据,更主服务器实现数据一致。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值