Redis主从复制是搭建Redis高可用服务的基础
一主一从:主节点发生故障,可转移到从节点,而且主节点可不开启AOF持久化 一主多从:如果读操作过多,可将读操作交由多个从节点,不过从节点过多,会加重主节点同步多个从节点的压力 树状主从:为了解决一主多从的缺点,可以采取树状主从的方式,将主节点的压力分摊到从节点上
我们搭建一个一主两从的主从结构 准备两个个redis实例作为从节点,修改redis.conf,添加配置项
# 指定主服务ip 端口 slaveof 192.168.254.130 6379 # 指定主服务认证密码 masterauth 123456启动两个从节点后,登录Redis主服务,使用info replication查看状态 从截图可以看出,主服务有两个从节点,端口分别是6380和6381 测试:在主节点执行命令 set say hi 从节点获取say的value值
只读模式:从节点一般设置为只读,避免从节点修改数据,导致主从数据不一致
slave-read-only yes传输延迟:主从复制存在网络延迟问题,Redis可以配置repl-disable-tcp-nodelay来决定是否关闭TCP_NODELAY,默认关闭
# 关闭:会及时的将消息发布到从节点,占带宽,适用于主从网络较好的场景 # 开启:主节点会合并所有的数据成tcp包节省带宽,默认40ms发一次,适用有网络环境复杂的场景 repl-disable=tcp-nodelay no心跳:主从之间具有长连接
# 主节点默认每10s向从节点发送ping命令 repl-ping-slave-period 10使用单纯的主从结构是不合理的,当主从节点出现故障时,需要手动的去修改redis及客户端的配置,Redis提供了哨兵的机制来解决这类问题