突然看到一篇关于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更改配置