REDIS主从同步

REDIS主从同步优点

1.Master可以有多个slave(分散读请求),提高系统伸缩性

2.多个slave可以连接到相同的Master,slave还可以和其他slave形成树状结构

3.可以用主从同步来实现高可靠性的数据持久化

REDIS主从同步原理

1.设置好slave后,slave主动和Master建立连接,发送SYNC命令

2.Master启动一个后台进程(fork命令,采用cope-on-write·机制),将内存的数据以快照的方式写入为文件中,同时收集新的写命令缓存起来。

3.Master后台进程完成数据快照后(rdb文件),将rdb文件传输给slave服务器

4.slave本地清空库数据,把rdb文件导入数据库中

5.Master服务器将所有更改数据库的操作,以命令的形式转发给slave,slave执行命令就可以达到同步的效果

主从同步设置

1.在从服务器终端运行slaveof ip port #slave重启后主从关系消失

2.在从服务器配置文件中加入slaveof ip port

REDIS主从同步缺点

当slave服务器和Master断开重连后,Master需要将数据库里的数据重新做一次快照。实际上我们只需要将slave和master断开的这段时间的更改数据库命令发送到slave就行,但是却多做了一次SYNC命令,这是不合理的.。

为了解决旧版复制功能的缺陷,新版复制功能(2.8版本以后)实现了PSYNC功能,PSYNC可以实现完整同步和部分重同步。

部分重同步由三个部分构成:

1.主服务器,从服务器复制偏移量、

主从服务器都会维护各自的复制偏移量,每次主向从从服务器传播N个字节数据时,就将自己的偏移量加上N,从服务器收到N个自己的数据时就将自己复制偏移量加上N

2.主服务器的复制积压缓冲区

每次住服务器将命令发送给从服务器时,还会将命令入队到复制积压缓冲区

3.服务器的运行ID

每个服务器都有自己的运行ID

部分重同步简略步骤如下

1.主从断开重连后,从服务器发送PSYNC <RUNID> <OFFSET>

2.主服务器根据自己的复制偏移量,从服务器传的复制偏移量,复制积压缓冲区的内容来判断是否执行部分重同步

3.如果是部分重同步,主服务器将把从服务器缺少的数据传给从服务器,主从服务器状态再度回到一致


参考书籍:REDIS设计与实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值