redis主从复制是为了打造高性能、高可用的redis必不可少的一个功能,当主节点挂掉时可以通过把从节点切换成主节点来继续为客户端提供服务达到高可用;也可以通过读写分离达到高性能redis。
一、建立复制与断开复制
1、可以用过slaveof配置项在从节点redis上配置其所属的主节点
2、客户端在从节点上通过slaveof命令动态设置当前redis所属的主节点
3、在从节点使用slaveof no one命令可以断开与主节点的复制关系
4、slaveof命令可以实现动态切换主节点,slaveof {newMasterIp} {new MasterPort},切主操作与新主节点建立复制关系后会清除当前redis节点中的所有数据,然后重新对新主节点的数据进行全量复制(下面会介绍全量复制与部分复制)
5、当master设置了密码时,需要在从节点配置masterauth参数和主节点的密码相同才能通过验证。
关于断开复制:并不会清除之前从主节点复制来的数据,只是以后不再从主节点同步数据了
从节点默认是只读默认的,确保主从节点数据的一致性,因为从节点可以感知并同步主节点的数据变化,而主节点不能感知到从节点的数据变化。
二、关于带宽消耗
redis默认主节点产生的命令无论大小都及时的发给从节点,这样主从节点的数据延迟就小,但是这样同时也会造成带宽消耗增加,对于网络情况较差的情况下可能不太适用,对于此种情况可以配置repl-disable-tcp-nodelay参数,使redis合并一些较小的数据包,有操作系统决定发送时间间隔,但是这样会加大数据的延迟。
三、主从结构
Redis支持三种主从结构,分别是:
1、一主对一从,常用于写请求量很大