redis集群模式 -cluster

  • 当遇到大的数据占用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节点,这里表示一主一从

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值