Redis主从

问:怎么提高单点Redis并发能力问题?
答:单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力。
        就需要搭建Redis主从,实现读写分离。单个主机负责写,从机集群负责读。


问:假设有AB两个Redis实例,如何让B作为Aslave节点(即如何让A为master,B为slave)答:配从不配主,在B节点执行命令:slaveof   AIP  A的port。port为端口。此时B就会继承A的replid,成为A的slave节点。 


Redis主从数据同步原理:主从关系第一次建立时的同步是全量同步,但如果slave重启后同步(此时主从关系就不是第一次),则执行增量同步。所以需要先判断主从关系是不是第一次建立。

判断依据:Replication Id(唯一id,也称replid)offset(偏移量)
        当不存在主从关系时,每一个redis实例都是master,即slave原本也是一个master,有自己的replid和offset,当第一次变成slave,会继承master的replid,与之相同。当两个Redis实例的replid不相同时,则表明两者是第一次连接,反之则不是。

全量同步:主从第一次建立连接时,会执行全量同步,将master节点的所有数据都拷贝给slave节点,详细流程:
建立主从连接关系
slave会声明自己的replid和offset并向master请求数据
master拿着自己的replid和slave的replid来判断是否是第一次同步,如果相同则是第一次同步,反之则反
如果是第一次,返回master的replid和offset给slave,slave继承replid
master自动执行bgsave,生成RDB,并记录RDB期间和之后的所有命令到repl_baklog
发送rdb文件给slave
slave先清空本地数据,再加载edb文件
master发送repl_baklog中的命令到slave中,slave收到并执行。

增量同步更新slave与master存在差异的部分数据
建立主从连接关系
slave会声明自己的replid和offset并向master请求数据
slave的replid和master的replid相同,不是第一次,回复contiue(回复确定信息)
去repl_baklog中获取salve的offset后的数据(即slave差的数据)
发送offset后的命令,slave收到并执行

注意:repl_baklog文件是环形数组,文件大小有上限,写满后会覆盖最早的数据,如果slave断开时间太久,未备份的数据被覆盖,则无法做增量同步,只能再次全量同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值