Redis全系列学习进阶篇之主从集群


前言

之前介绍redis的基础应用、底层原理以及工作中的实际运用,这篇文章开始介绍redis的主从集群和哨兵机制,从概念到实操,这块我在面试中被问的挺少的,最多问问数据同步机制,但是我们工作中可能会用到,特别是没有运维需要开发自己部署环境的公司;


redis的主从集群

为了解决单点故障的问题,redis提供了主从集群的机制,这样即使master挂了能快速切换到从机,从而实现服务的高可用,下面列一下redis集群的特点:

  • redis的主从集群,从机默认是只读不写
  • 为了追求高性能,主从之间的同步是异步的,效率高但是会存在丢失数据的风险
  • 主从间支持增量同步,但是如果从机开启了aof,那么只能全量同步,因为同步的偏移量记录在rdb文件了,即使aof开启了混合持久化也不会增量同步,具体实操的时候我会截图证明

环境搭建

  1. 前置操作:安装redis,这里就不介绍了;创建文件夹,我这里创建的文件夹是dll-redis-cluster
  2. 把redis安装包里的redis.conf复制到dll-redis-cluster目录分别重命名为redis-6379.conf,redis-6380.conf,redis-6381.conf
  3. 因为redis配置文件默认是关闭aof的,所以不用修改配置,只需把上述的三个配置配置文件里面的端口port改成与文件名一致即可
  4. 为了便于观察主从同步过程中redis的日志,所以需确认下配置文件里的daemonize是不是no,不是的话改成no
  5. 接下来复制三个窗口,分别开启三个redis服务,如图(截图只贴了79和80,81是一样的):
    在这里插入图片描述
  6. 接下来分别开启三个客户端连接这三个服务, 命令:redis-cli -p 6379;这里就不贴图了
  7. 此时,三个redis是独立的,没有任何关联,可以使用keys *命令查看各自的key,这时候应该都是空的
  8. 假设我们期望6379为master,80和81追随79,可以使用SLAVEOF或者REPLICAOF
  9. 在80和81的客户端输入以下指令 replicaof 127.0.0.1 6379,如图:
    在这里插入图片描述

通过6379的日志可以发现,主被从机追随时,主机做了对复制ID的校验,RDB持久化,向6381发送数据等一系列操作

  1. 测试同步是否成功,如图:
    在这里插入图片描述

至此,主从同步的环境搭建完毕,下面我们再做两个测试,一个是从机下线,让主机接收写请求,从机再次上线观察是全量同步还是增量同步;另一个是从机下线后我们设置持久化策略为AOF,再次上线后观察是全量同步还是增量同步

  1. 从机下线,主机接受请求,不开启AOF,重新上线,效果如图:
    在这里插入图片描述

结论:从机重新上线后是会根据偏移量增量同步的,不会全量同步

  1. 从机下线,主机接受请求,开启AOF后重新上线,效果如图:
    在这里插入图片描述
    可以看到从机开启aof重新上线后主机是重新执行了rdb落盘然后全量同步的操作的,所以开启了AOF的从机重新上线后是会全量同步主机数据的

总结

至此,redis主从集群搭建完毕,我们之所以要搭建主从集群是为了解决单点故障从而实现redis的高可用,所以必须存在一个角色,它可以实时监控redis集群,当主挂了的时候能够快速切换某台从机为主,redis里这个角色一般就是哨兵了,下一章我会介绍redis的哨兵机制,以及哨兵环境的搭建和实现的redis主从集群的监控

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值