redis面试题

RedisCluster采用多主多从结构,通过gossip协议通信,创建时需分配hash槽。哨兵(Sentinel)模式提供高可用性,监控主从节点,自动进行故障转移。当主节点故障,Sentinel会选举新的master,并通知客户端地址变更。
摘要由CSDN通过智能技术生成

1 redis cluster

  1. redis cluster是多主多从结构,节点间通过gossip协议通信
  2. redis集群创建,redis按单机启动后,执行命令:前三个为主 后三个为从
    ./redis-cli --cluster create ip1:6379 ip2:6379 ip3:6379 ip4:6379 ip5:6379 ip6:6379 --cluster-replicas 1
  3. 扩容:需要分配hash槽该扩容节点才可以用
  4. 缩容也需要进行hash槽重新分配
  5. 缺少一个主节点则集群不可用

参考:
redis面试题
Redis-Cluster集群搭建
Redis - 集群Hash槽分配

2 redis 哨兵

  1. 哨兵模式是Redis的高可用方式,可以监听主从模式的redis,在主节点故障后,将slave升级为master
  2. 哨兵节点是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点
  3. Sentinel 与 Sentinel 、Sentinel 与 Redis Node都使用redis的pubsub(sentinel:hello)进行通信
    心跳:PING返回PONG
    信息:INFO
  4. 每个Sentinel启动时只需要监听master就行,master上将会有所有Sentinel的信息, Sentinel通过master就可以获得其他Sentinel的信息
  5. 每个 sentinel 哨兵节点每隔1s 向所有的redis node发送心跳,如果 master 节点回复 PING 命令的时间超过阈值(默认30s),则判断master为主观下线,然后询问其他sentinel 是否同意下线,当一半以上的sentinel 同意后,master为客观下线,即master节点不可用
  6. 基于Raft算法选举领头sentinel,用来负责故障转移,选择一个slave成为新的master。选择领头sentinel的过程符合先到先得的原则,判断客观下线的sentinel节点向其他 sentinel 节点发送选举自己为头,其他sentinel只回复收到的第一个节点为同意,后面的都不同意
  7. 选择slave的策略:
    ① 选择优先级最高的节点,通过sentinel配置文件中的replica-priority配置项,这个参数越小,表示优先级越高
    ② 如果第一步中的优先级相同,选择offset最大的,offset表示主节点向从节点同步数据的偏移量,越大表示同步的数据越多
    ③ 如果第二步offset也相同,选择run id较小的
  8. sentinel 进行主从切换时,客户端如何知道地址变更了?
    ①旧的主库挂掉了,那么所有正在使用的连接都会被关闭,然后在重连时就会用上新地址
    ②sentinel 主动进行主从切换,主库并没有挂掉,主从切换后,之前的主库被降级到从库,所有的修改性的指令都会抛出ReadonlyError

参考:Redis哨兵机制原理详解

3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值