文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Redis集群(Cluster)

2023-08-31 12:18

关注

Redis集群

集群解决的问题

服务器的容量不足或者进行并发写操作的用户过多等情况下可以使用多台Redis集群的方式缓解压力。

注:(高并发的写操作,如果是一主多从模式主服务器承受的压力会很大,因此引入集群)

代理主机和无中心化集群

以电商项目的用户、订单、商品三个模块来演示代理主机和无中心化集群。如下图:

用户信息、订单信息、商品信息分别使用三台Redis服务器存储。 这样一来,相应的操作就会去请求相应的Redis服务器。
在这里插入图片描述


问题:客户端通过何种方式知道需要去请求哪个服务?

①代理主机方式通过加一层代理服务器解决此问题(不推荐使用)
在这里插入图片描述

可以看到,以代理主机方式按照目前的需求搭建集群,至少需要8台服务器。搭建和后期维护都很不方便,所以不推荐使用此方式创建集群,于是引入了无中心化方式的集群!!!

②无中心化搭建Redis集群方式解决此问题(推荐)


无中心化Redis集群搭建方式最少需要6台服务器即可。和代理主机方式相比优势明显。


Redis集群的特点


Redis集群环境搭建

根据上面介绍,我们了解到无中心化集群搭建方式至少需要6台Redis服务器。接下来演示无中心化Redis集群环境搭建:

接下来演示在一台linux主服务器上模拟六台Redis服务器,演示无中心化Redis集群环境的搭建:

①在Linux服务器中新建一个myredis文件夹。如下图:
在这里插入图片描述

②创建6个redis实例,端口号为:6379、6380、6381、6389、6390、6391
如果使用云服务器记得设置这几个端口的安全组
实现:

vim redis6379.conf 创建配置文件并写入如下内容:
在这里插入图片描述

复制出其余5个配置文件
在这里插入图片描述

依次通过字符串替换修改5个文件内容(下图是修改redis6381.conf的过程,修改其余配置文件操作类似)
在这里插入图片描述

③启动6个Redis服务

格式:redis-server redis6379.conf(启动redis6379服务)
在这里插入图片描述

通过ll命令查看,确保如下的节点文件生成成功
在这里插入图片描述

④一个集群至少要有三个主节点,先组合创建只有三个主节点的集群(6379、6380、6381)

组合之前,务必请确保所有redis实例启动后,nodes-xxxx.conf文件都生成正常。

Redis版本低的话,需要额外装上rubby环境。新版的redis自带了rubby环境,。我使用的是新版本redis7

⑤启动redis服务后,需要连接Redis。

在这里插入图片描述

⑥通过 cluster nodes 命令查看集群信息
在这里插入图片描述

⑦增加三个从机到集群中去,并设置相应的主机
redis-cli --cluster add-node 47.116.4.200:6389 47.116.4.200:6379 --cluster-slave --cluster-master-id 主机的id (-a Redis密码):增加从节点6389到集群中去,并将其设置为6379主机的从机

以同样的方式,把6390添加为6380的从机;把6391添加为6381的从机。

添加完毕之后通过redis-cli -c -p 6379连接一台集群中的redis服务器。并通过cluster nodes查看节点信息。如下图:
在这里插入图片描述

此时可以看到集群中节点已经分为三组:


slots(插槽)


在集群中录入值

①录入单个值
在这里插入图片描述
6381管理的插槽范围是10923 号至 16383 号,12706在其范围内。

一开始,请求进入6379,执行set k1 值操作时,计算k1的插槽值,发现k1插槽值不在6379服务器管理范围内,于是会转移请求找到6381服务器并执行set操作。

②尝试录入多个值
在这里插入图片描述
无法计算多个key的插槽值。集群中mset不能执行成功。

如果非要在集群中录入多个值,可以使用添加分组的方法

key值后面添加{ 组名 },就可以根据组名计算插槽,而不用再根据key值计算。此方法插入即可成功。如下图:
在这里插入图片描述


查询集群中的值

cluster keyslot key:计算key值的插槽数
在这里插入图片描述

cluster countkeysinslot 插槽值:计算插槽中有几个key(键)
在这里插入图片描述

注意: 虽然当前12706插槽中有一个k1,但12706在 6381节点的管辖的插槽值范围(10923~16383) 内。此命令只能计算当前6380节点管辖的插槽值范围(5461~10922) 内的数据。上图中的12706超出范围,因此返回0。

cluster getkeysinslot 插槽数 个数:返回count个插槽中的key
在这里插入图片描述
上图表明,此时的4576插槽中只有一个k3。


故障恢复

此时我们搭建的集群中为三组“一主一从”,如果集群中某台主机挂掉,其从机立马上位接替主机工作,继续提供服务。此即为故障恢复。 如下图:
在这里插入图片描述

此时思考:如果此时再次重启6379服务器,6379的角色是什么?

答案是重启6379服务器,6379角色变为6389的从机,上位主机后的6389服务器依然是主机。如下图:
在这里插入图片描述

再次思考:如果集群中某台主机挂掉之后,此主机的所有从机也都挂掉了(如下图),整个集还能正常提供服务吗?
在这里插入图片描述

答案为不一定。主要要看配置文件。
某一段插槽的主从都挂掉时,集群能否提供服务主要看配置信息(cluster-require-full-coverage )


Redis集群的优缺点

优点:多台服务器集群可以分摊并发操作压力实现扩容

缺点不支持多键操作(如mset命令会操作失败)、不支持多键的Redis事务、不支持lua脚本.

来源地址:https://blog.csdn.net/qq_46370017/article/details/126347976

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯