主从复制
Redis根据配置和策略进行主从复制,其中Master以写为主,Slave以读为主。
配置策略
一主二仆
一个Master,多个Slave,Slave从Master复制信息,用于读数据,写操作只能在Master上执行。
薪火相传
一个Master,多个Slave会造成中心化严重,Master要一直把消息传给Slave,影响效率,因此可以Slave也可以跟随Slave,,即Master将消息传给Slave1,Slave1将消息传给Slave2。
反客为主
当Master挂掉了,Slave回原地等待,Master恢复后,Slave会继续跟随。
但这种情况不好(可能Master一直恢复不了)。因此可以手动设置Slave为新的Master,其他Slave跟随这个新Master。
哨兵模式
前面的反客为主,得手动操作。可以增加哨兵模式,即监控Redis集群,如果Master挂掉了,会采用Slave投票过半机制选出新的Master,其余Slave会自动跟随。
需要仔细了解投票机制,如果投票相平则选举失败,会再次投票。
这里的选举方式,与Kafka的选举很相似。
复制原理
slave启动后,连接到master,会向其发送一个sync命令,master收到命令后,会将整个数据传送给slave,完成同步(全量复制)。
全量复制:slave收到数据文件后,将其加载到内存中。
增量复制:master将新的修改命令传送给slave,完成同步。
slave一开始的同步,都是全量复制,后面开始增量复制。