复制
在分布式系统中,为了解决单点问题,通常会将数据复制多个副本部署到其他的机器用来满足故障恢复和负载均衡等需求。Redis中能够也是,提供了复制功能,实现了相同数据的多个Redis副本。复制功能是高可用Redis的基础,而少哨兵和集群都是基于复制的基础上实现高可用的。
默认情况下,Redis都是主节点。每个从节点都只能有一个主节点,而主节点可以拥有多个从节点,Redis中复制数据流是单向的,只能由主节点复制到从节点。
复制的拓扑结构
Redis的复制拓扑结构支持单层或者多层复制关系。根据复杂性可以分为:一主一从、一主多从、树状主从结构。
一主一从结构
是最简单的复制拓扑结构,用于主节点出现宕机后从节点提供故障转移支持。
上图Redis_A作为主节点,Redis_B作为从节点。
当应用在写命令并且并发量较高并且需要开启持久化时候,可以在从节点开启AOF,这样子既保证数据安全性同时也避免了持久化对主节点的性能干扰,但是需要注意的是,当主节点关闭持久化功能时,如果主节点宕机需要避免从节点进行自动启动。因为主节点之前没有开启持久化功能,自动重启之后数据集为空,这时候从节点如果继续复制主节点会导致从节点数据也被清空的情况,丧失了持久化的意义。所以为了避免这种情况,可以在从节点上执行slaveof no one断开主节点的复制关系,再启动主节点。