【无标题】

配置主从节点

配置redis主从节点之后,redis的从节点会自动同步主节点的数据,之后便可以在主节点上写,从节点上读实现读写分离。

数据同步的原理

首先第一次replid判断当前从节点是否为第一次获取数据,如果replid不一致则为第一次获取数据,之后从节点记录replid和offset,第一次同步首先进行全量同步,主节点将RDB文件同步给从节点,从节点接收到RDB清空原来的数据并加载RDB文件,在这之后,主节点如果有增加数据,则会将命令记录在repl_baklog缓冲区中之后再同步给从节点。如果replid一致不为第一次获取数据,做增量同步,会根据主节点的offset和从节点的offset来判断需要同步repl_baklog中的哪些数据,repl_baklog可以看作一个环形数组。当从节点重启也会做增量同步。

数据同步的优化

哨兵机制

 当sentinel认为主节点下线(sentinel会监听主节点的心跳,当有quorum个sentinel认为主节点下线时便可以认为该节点下线,quorum一般为sentinel数量的一半),sentinel会选取一个从节点发送命令slave of no one让其成为新的主节点,并且通知其他节点让其他节点slave of 新的master节点,并让原来的主节点slave of 新的master节点,选取依据主要是通过offset和优先级。

redis分片集群

 

 在redis分片集群中,不存在哨兵机制,每个master节点互相监听心跳,并且每个节点的数据不是与节点绑定,而是与插槽绑定,这样可以帮助我们查找key时知道要去哪个节点找,并且如果某个主节点出现宕机,如果数据与节点进行绑定,就会存在数据丢失,而与插槽进行绑定我们就可以通过插槽进行数据转移。插槽总数为16384,当创建分片集群时,会为每个分片分配对应的插槽范围,当存入一个key时,就会去计算当前key所对应的插槽值是多少,并将其存入对应的插槽与对应的节点,之后取的时候先通过插槽范围找到分片,再去所对应的节点上取。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值