redis集群模式 -cluster
创始人
2025-06-01 06:45:05
  • 当遇到大的数据占用redis内存,或者说高并发的数据和流量都超过了单台redis的处理能力的时候,我们就需要搭建使用redis的集群模式了。

  • RedisCluster是Redis 提供的集群化方案,它是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。

  • RedisCluster是去中心化的,我们需要将每个redis节点设置成集群模式,每个节点负责整个集群的一部分数据,每个节点负责的数据多少可能不一样。多个节点相互连接组成一个对等的集群,它们之间通过一种特殊的二进制协议相互交互集群信息。

  • 当集群中的某一个的redis节点出现了异常,Rediscluster会完成节点的移除和故障转移。

  • 因为 RedisCluster 是去中心化的,一个节点认为某个节点失联了并不代表所有的节点都认为它失联了。所以集群还得经过一次协商的过程,只有当大多数节点都认定了某个节点失联了,集群才认为该节点需要进行主从切换来容错。

  • Redis的集群至少是3主3从,且每个实例使用不同的配置文件。在cluster模式下,默认的,一般redis-master用于接收读写,而redis-slave则用于备份。

  • 当有请求是在向slave发起时,会直接重定向到对应key所在的master来处理。 但如果不介意读取的是redis-cluster中有可能过期的数据并且对写请求不感兴趣时,则亦可通过readonly命令,将slave设置成可读,然后通过slave获取相关的key,达到读写分离。

哈希槽-slots

  • 在cluster集群里会有16384个哈希槽(hash slot),在设置Redis的键(key)时,会先用CRC16算法对key运算,并用16384对运算结果取模,结果是多少,就把这个key放入该结果所编号的哈希槽里。

  • 读取key的操作和写操作相反,先用上述公式求得对应的槽编号,再到对应的哈希槽里取

  • cluster集群中的每个节点会被平分到一定数量的哈希槽用来存储数据,这样不管是集群中那个几点进行key的操作都需要去16384个哈希槽中寻找对应的槽然后寻找key即可。

Cluster集群环境搭建:

Redis为了其高可用性,要求我们的集群几点数量至少是6个节点,这6个节点也会有节点形成主从关系,即3主3从的环境,并且对于从节点不需要我们进行之前主从的配置,也就是说这6个节点都是跟之前的主节点一样的差不多的配置,只不过需要我们在每个配置文件中开启Cluster集群模式,添加如下信息:

这里我们使用不同的端口号来模拟不同的redis节点 (如果服务器数量足够那么端口都是6379,只是IP7

同而已)。

创建6个节点成功之后,我们随意的进入其中一个容器,然后创建redis集群:

注意:

在redis的老的一些版本需要我们自己写shel脚本对redis集群中的16384个横位进行,而且必须分配完所有的哈希槽,脚本案例如下:

后来的版本中 Redis Cluster提供了 cluster create 命令创建集群,使用这个命令Redis 会自动把这些槽平均分布在集群实例上,这样就变得更加的方便。命令使用如下:

--cluster-replicas 1: 表示一个master配置几个slave节点,这里表示一主一从

相关内容

热门资讯

三年级下册的作文【优质6篇】 三年级下册的作文 篇一我的暑假生活暑假到了,我迫不及待地开始了我的暑假生活。这个暑假对我来说特别有意...
小学三年级作文500字 关于小学三年级作文500字9篇  在日常生活或是工作学习中,大家最不陌生的就是作文了吧,写作文可以锻...
关于三年级a做了一件家务事的... 关于三年级a做了一件家务事的作文 篇一三年级a做了一件家务事今天,我要给大家讲一个关于三年级a的故事...
向日葵(经典5篇) 向日葵篇一向日葵,暖阳下的微笑向日葵是一种充满阳光与希望的美丽花卉。它的名字源自于它的生长习性,总是...
又有创新产品,获批! 【导读】首批上证580ETF、上证380ETF及其ETF联接基金获批 中国基金报记者 李树超 又有重...