首页 > 技术文章 > Redis理解

honour1207 2020-12-03 16:32 原文

突然看到一篇关于Redis的理解。发现渐渐的随着工作开始成了一个copy工作者。每次发现错误或者需要用的东西就会跑来查询,查询以后就去测试然后应用。慢慢的在不知道的情况中忘记了当时学习的快乐。

此篇只是博主个人思维导图,各位朋友看完勿喷,有错误希望在评论区写下来,万分感谢

Redis思维导图(RDB模式转换AOF模式)

1. 缺点:每次加入新的数据,主节点都会把全部数据再次发送给从节点。这是要损害消耗的。

2. 解决问题一:增加缓存区和偏移量 方便在某个从节点挂掉以后 上线同步数据 有一个问题就是如果新进从节点该怎么办

 缺点:如果有新加入的从节点,那么主节点如何判断是否需要同步全部数据

 为了更容易看清楚,下面分为多张图片

 2.1. 没有有掉线情况

 

 2.2. 存在掉线情况

  图一

  

  

  图二

  

  图三

  

3. 解决问题二:增加主节点的唯一的随机运行ID,来保证主节点明确知道谁是自己的下级 问题来了 如果主节点挂掉怎么办

  

 

4. 解决问题三:哨兵模式 sentinel

  问题三:当主节点挂掉以后,如何选择某一个从节点做为主节点,又如何选择某一个这个节点如何修复

  哨兵模式:独立的进程运行,比如说 城池防守,所有士兵都站在城墙上被攻城人冲击。哨兵模式则是监军。来回巡逻,如果士兵被流矢击中倒地,监军就会过去拍拍士兵挂没挂,如挂了,那么监军就会把挂掉士兵拖下去,让另一个士兵顶上。也就是说一个监军可以监多个士兵

  哨兵:

    1. 通过发送命令,让Redis服务器返回监控的状态。包括master和slave

    2. 当哨兵检测到master挂掉,会自动将slave转换成master,并且会告知所有的 slave 你们的master换了。以后去新的master同步数据。然后所有的slave收到消息以后,修改自己的配置文件。以后就去新master拿数据

  4.1. 单哨兵  问题又来了 万一单哨兵,哨兵挂掉怎么办

    

  4.2 多哨兵模式  解决单哨兵模式挂掉怎么办 

    多哨兵模式:sentinel不但需要监听master和slave还需要监听除自己以外的别的sentinel。已防止某个sentinel挂掉。

    如master挂掉以后,由于不是一个单哨兵模式了,所以发现的哨兵会自己做一个记录,一定数量的sentinel知道挂掉以后,就会去讨论哪一个slave来顶替master的位置,来进行投票表决。

    最后结果投票之后,由发起人sentinel来进行failover操作,也就是故障切换,切换以后告诉所有哨兵,让哨兵告诉监控下的所有slave更改配置

    

  

推荐阅读