#### redis主从复制原理 ####

转自 https://juejin.cn/post/6844903880745025543

仅做个人备份,浏览请看原文

目录

1、复制方式

2、工作原理

3、主从复制中的key过期问题

4、主从复制的作用

1、复制方式

Redis主从复制分为以下三种方式:

1、当master服务器与slave服务器正常连接时,master服务器会发送数据命令流slave服务器,将自身数据的改变复制到slave服务器。

2、当因为各种原因master服务器与slave服务器断开后,slave服务器在重新连上master服务器时会尝试重新获取断开后未同步的数据即部分同步,或者称为部分复制

3、如果无法部分同步(比如初次同步),则会请求进行全量同步,这时master服务器会将自己的rdb文件发送给slave服务器进行数据同步,并记录同步期间的其他写入,再发送给slave服务器,以达到完全同步的目的,这种方式称为全量复制

2、工作原理

master服务器会记录一个replicationId的伪随机字符串,用于标识当前的数据集版本,还会记录一个当数据集的偏移量offset,不管master是否有配置slave服务器,replication Id和offset会一直记录并成对存在。

当master与slave正常连接时,slave使用PSYNC命令向master发送自己记录的旧master的replication id和offset,而master会计算与slave之间的数据偏移量,并将缓冲区中的偏移数量同步到slave,此时master和slave的数据一致。

注意:而如果slave引用的replication太旧了,master与slave之间的数据差异太大,则master与slave之间会使用全量复制的进行数据同步。

3、主从复制中的key过期问题

我们都知道Redis可以通过设置key的过期时间来限制key的生存时间,Redis处理key过期有惰性删除和定期删除两种机制,而在配置主从复制后,slave服务器就没有权限处理过期的key,这样的话,对于在master上过期的key,在slave服务器就可能被读取,所以master会累积过期的key,积累一定的量之后,发送del命令到slave,删除slave上的key。如果slave服务器升级为master服务器 ,则它将开始独立地计算key过期时间,而不需要通过master服务器的帮助。

4、主从复制的作用

1、保存Redis数据副本

当我们只是通过RDBAOFRedis的内存数据持久化毕竟只是在本地,并不能保证绝对的安全,而通过将数据同步slave服务器上,可以保留多一个数据备份,更好地保证数据的安全。

2、读写分离

在配置了主从复制之后,如果master服务器的读写压力太大,可以进行读写分离(注意:默认状态下,从节点是不对外提供服务的,这样的优点是可以避免主从延迟对业务场景的影响问题),客户端向master服务器写入数据,在读数据时,则访问slave服务器,从而减轻master服务器的访问压力。

3、高可用性与故障转移

服务器的高可用性是指服务器能提供7*24小时不间断的服务,Redis可以通过Sentinel系统管理多个Redis服务器,当master服务器发生故障时,Sentineal系统会根据一定的规则将某台slave服务器升级为master服务器,继续提供服务,实现故障转移,保证Redis服务不间断。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值