Redis的三种集群模式(图解)

  1. 主从复制模式

一个主节点和多个从节点。主节点提供写入和读取功能,但是从属节点只提供读取功能。

主从复制的数据同步过程如下:

(1)首先主节点启动,然后从属节点启动,从属节点会连接主节点并发送SYNC命令以请求同步

(2)主节点收到SYNC命令之后,就会执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的写入命令

(3)执行了BGSAVE之后,就向所有从属节点发送快照文件

(4)从属节点收到快照文件之后,会丢弃自己已有的所有旧数据并把收到的快照写入数据库

(5)之后,主节点会把缓冲区中的写命令发送给所有从节点实现从节点的增量同步

缺点:主节点挂了,需要手动去设置一个从属节点变为主节点并修改其它节点配置。

  1. 哨兵模式

在主从复制模式的基础上,增加哨兵节点以监视所有节点的情况,假设主节点挂掉了,哨兵节点会从所有从属节点中选举一个节点作为新的主节点,并修改其余从属节点的配置。

  1. cluster模式

在上述哨兵模式中,已经实现了高可用和读写分离。但是我们也可见每个节点都要储存一份完整的数据,这样很浪费内存。因此Redis官方推出了Cluster模式,这种模式下每个节点不会储存完整的内容,但是节点直接相互连通,所有节点内容加起来才是完整的内容。

每个节点可能储存一部分内容,但是不论某个内容存放在哪个节点,我们都可以通过任意一个节点访问到,因为它们之间互相连通。

Redis会先把整个集群所使用的储存空间分为一定数量的等分 ,这个等分就叫做哈希槽(hash slot)

Redis集群中有16384个哈希槽,假设集群中有三个主节点分别是A、B和C,每个主节点对应一个从属节点A1、B1和C1,那么主节点会被分配槽位如下:

  • A包含从0-5460哈希槽位
  • B包含从5461-10922哈希槽位
  • C包含从10923-16383哈希槽位

存入数据时,就会对存入的键计算CRC16,然后拿计算出来的值对16384取模得到的结果,就是这个数据的槽位。假设现在主节点B挂掉了

,其对应的从属节点B1会被自动地提升为主节点,意味着5461-10922槽位还能存储数据。

相关推荐
Deng9452013141 小时前
基于Python的职位画像系统设计与实现
开发语言·python·文本分析·自然语言处理nlp·scrapy框架·gensim应用
一只小青团3 小时前
Python之面向对象和类
java·开发语言
好奇的菜鸟3 小时前
Spring Boot 事务失效问题:同一个 Service 类中方法调用导致事务失效的原因及解决方案
数据库·spring boot·sql
qq_529835354 小时前
ThreadLocal内存泄漏 强引用vs弱引用
java·开发语言·jvm
景彡先生4 小时前
C++并行计算:OpenMP与MPI全解析
开发语言·c++
落笔画忧愁e4 小时前
扣子Coze飞书多维表插件添加数据记录
java·服务器·飞书
岁岁岁平安4 小时前
Redis基础学习(五大值数据类型的常用操作命令)
数据库·redis·学习·redis list·redis hash·redis set·redis string
量子联盟5 小时前
原创-基于 PHP 和 MySQL 的证书管理系统,免费开源
开发语言·mysql·php
小光学长6 小时前
基于vue框架的防疫科普网站0838x(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库
极限实验室6 小时前
使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建
数据库·docker·devops