Redis主从

目录

1. 介绍

2. 安装

3. 启动

4. 连接 

5. 实现原理

5.1 全量同步

5.2 增量同步

缺点


 


1. 介绍

从上图可以得知:

master节点下可以配置多个slave节点,slave节点下又可以配置多个slave。

主从的特点:

主对外,从对内;主可写,从不可写。
主挂了,从不可为主, 从不提供服务,可读不可写。

 

2. 安装

  • 主redis配置:无需特殊配置
  • 从redis配置 
vim redis.conf

# slaveof <masterip> <masterport> 
# 表示当前【从服务器】对应的【主服务器】的IP是当前机器ip,端口是6380。 
slaveof 127.0.0.1 6380

3. 启动

  1. 启动master redis节点
  2. 启动slave redis节点

master节点和slave节点的启动 不分先后顺序,最好先启动slave,再启动master。

# 在redis安装的bin目录下

./redis-server redis.conf

4. 连接 

# 连接master节点
# 地址-h和端口-p自己按照实际条件更换
./redis-cli -h 127.0.0.1 -p 6380

5. 实现原理

  • Redis的主从同步,分为全量同步增量同步
  • 只有从机第一次连接上主机的时候是全量同步。
  • 断线重连有可能触发全量同步也有可能是增量同步。(master判断runid是否一致)
  • 除此之外的情况都是增量同步

5.1 全量同步

Slave向Master发送PSYNC请求。

PSYNC:是个命令,表示要复制数据。

PSYNC <runid> <offset>
runid:主服务器ID
offset:从服务器最后接收命令的偏移量

runid:每个Redis服务器都会有一个表明自己身份的ID。在PSYNC中发送的这个ID是指之前连接的Master的ID,如果没保存这个ID,PSYNC的命令会使用"PSYNC ? -1" 这种形式发送给Master,表示需要全量复制。

offset: 复制偏移量。在主从复制的mater和slave双方都会各自维持一个offset。master成功发送N个字节的命令后,会将master的offset加上N, 同理,slave是在接收N个字节的命令。
master和slave的状态如果是一致的,name它们的offset也应该是一致的。

复制积压缓冲区: 它是由master维护的一个固定长度的队列,作用是缓存已经发送出去的命令。 当master进行命令传播时,不仅将命令发送给所有的slave,还会将命令写入到复制挤压缓存区里面。

Redis的全量同步过程分三个阶段:

  • 同步快照阶段:Master创建并发送快照给Slave,Slave载入并解析快照。Master同时将此阶段产生的新的写命令存储到缓冲区。
  • 同步写缓冲阶段:Master向Slave同步存储在缓冲区的写操作命令。
  • 同步增量阶段:Master向Slave同步写操作。

5.2 增量同步

  • Redis增量同步主要指Slave完成初始化后开始正常工作时,Master发生的写操作同步到Slave的过程。
  • 通常情况下,Master每执行一个写命令就会向Slave发送相同的写命令,然后Slave接收并执行。

缺点

Redis主从复制的缺点:没有办法对master进行动态选举(master宕机后,需要重新选举master),需要使用sentinel机制完成动态选举。

 

参考博客

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值