Redis 八股文

1. Redis主从同步原理:

1、slave执行命令向master建立连接
2、master执行bgsave(后台存储),生成rdb快照(redis备份方式,data以二进制方式保存在本地),发送到slave上
3、slave获取快照后读取,对data还原,保证初始化数据一致
4、master接受命令发送到salve,salve执行保证后续数据一致

缺点:master挂掉,redis集群瘫痪。
在这里插入图片描述

引出高可用,sentinel(哨兵模式)

1、建立sentinel集群,有一个leader角色
2、一般需要6个节点,3个sentinel,1主2从
3、sentinel安装在节点上,根据配置信息监听redis的健康状态。
(每个sentinel 1次/秒频率向master,salve及其他sentinel实例发送ping命令)

若master挂了,怎么办?
先判断是否真挂了:
主动下线(不靠谱,存在网络问题误判):实例最后一次有效回复时间超时
客观下线:多个sentinel ping不通(多个=总数除以2+1)

在这里插入图片描述
在这里插入图片描述

判断下线的条件:

1.剔除主观下线、已断线、或者最后一次回复PING命令的时
间大于五秒钟的Slave
2.剔除与失效主服务器连接断开的时长超过down-after选项
指定的时长十倍的Slave
3.按同步数据的偏移量选出数据最完整的Slave
4.如果偏称量相同,选中ID最小的Slave

故障转移

选出新的master后,开始故障转移
1.向被选中的从服务器发送SLAVEOF NO ONE命令,让它转变为主服务器。
2.通过发布与订阅功能,将更新后的配置传播给所有其他Sentinel,其他Sentinel对它们自己的配置进行更新。
3.向所有Slave下达SLAVEOF命令,指向新的master
4. redis-slave向master重新建立连接,重放rdb保持数据同步
5.在上述转移过程中,伴随着Redis本地配置文件的自动重写,这样即使是实例重启配置也不会丢失
6.原有的master在恢复后降级为slave与新master全量同步

如何保证Sentinel高可用

如果Sentinel挂了怎么办?如何保证Sentinel高可用
1.sentinel自动故障迁移使用raft算法来选举领头(leader) sentinel
2.超过半数投票选出leader, sentinel Leader用于下达故障转移的指令
3.如果某个Leader挂了,则使用Raft从剩余的Sentinel中选出leader
在这里插入图片描述

事实上,在最开始的时候,sentinel节点是先和master建立连接,然后通过服务的注册发现才知道其他sentinel节点的存在。

相关推荐

  1. Redis八股文

    2024-07-12 02:40:03       29 阅读
  2. 八股Redis

    2024-07-12 02:40:03       28 阅读
  3. 八股Day4 Redis

    2024-07-12 02:40:03       28 阅读
  4. 面试 Redis 八股文十问十答第三期

    2024-07-12 02:40:03       29 阅读
  5. 面试 Redis 八股文十问十答第四期

    2024-07-12 02:40:03       31 阅读
  6. 面试 Redis 八股文十问十答第二期

    2024-07-12 02:40:03       27 阅读
  7. 面试 Redis 八股文十问十答第五期

    2024-07-12 02:40:03       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 02:40:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 02:40:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 02:40:03       57 阅读
  4. Python语言-面向对象

    2024-07-12 02:40:03       68 阅读

热门阅读

  1. Docker-12 Docker常用命令

    2024-07-12 02:40:03       17 阅读
  2. HJ2 计算某字符出现次数 、 HJ3 明明的随机数

    2024-07-12 02:40:03       21 阅读
  3. 什么是Stream流

    2024-07-12 02:40:03       21 阅读
  4. playwright下载文件如何不被删除

    2024-07-12 02:40:03       17 阅读
  5. c#中的超时终止

    2024-07-12 02:40:03       18 阅读
  6. 归并排序算法Python实现

    2024-07-12 02:40:03       22 阅读
  7. 07-7.4.2 B+树

    2024-07-12 02:40:03       19 阅读
  8. 生信技能52 - VCF文件hg38与hg19坐标相互转换

    2024-07-12 02:40:03       20 阅读
  9. 技术总结(1)——方向与成长思考

    2024-07-12 02:40:03       23 阅读
  10. 《穿透财报:读懂财报中的逻辑与陷阱》

    2024-07-12 02:40:03       21 阅读
  11. Spring——自动装配Bean

    2024-07-12 02:40:03       21 阅读
  12. 前端高頻面試題(一)

    2024-07-12 02:40:03       22 阅读
  13. SpringBoot常见注解

    2024-07-12 02:40:03       19 阅读
  14. linux lvm使用

    2024-07-12 02:40:03       20 阅读
  15. ETag:Springboot接口如何添加Tag

    2024-07-12 02:40:03       22 阅读
  16. 3. 排序算法代码-python

    2024-07-12 02:40:03       23 阅读