广告
返回顶部
首页 > 资讯 > 服务器 >Redis集群(Cluster)
  • 791
分享到

Redis集群(Cluster)

redis数据库服务器 2023-08-31 12:08:06 791人浏览 薄情痞子
摘要

Redis集群 集群解决的问题代理主机和无中心化集群Redis集群的特点Redis集群环境搭建slots(插槽)在集群中录入值查询集群中的值故障恢复Redis集群的优缺点 集群解决的问

Redis集群

集群解决的问题

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

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

代理主机和无中心化集群

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

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


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

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

  • 访问的时候请求代理服务器,由代理服务器进行分发。

  • 局部可以使用主从模式,如果其中某一台Redis服务器挂掉,从机上位变为主服务器继续提供服务。

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

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

  • 任何一台Redis服务器都可以作为集群的入口。比如要访问订单数据,通过用户服务器进入集群,用户服务器会在集群内部把请求进行转移,直到找到订单服务器。
    在这里插入图片描述

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


Redis集群的特点

  • Redis 集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N。

  • Redis 集群通过分区来提供一定程度的可用性: 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。


Redis集群环境搭建

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

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

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

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

  • 6379为主机,6389为从机
  • 6380为主机,6390为从机
  • 6381为主机,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安装目录下的src目录中可以看到,,关于rubby的文件
    在这里插入图片描述

  • 使用命令进行合并创建集群
    redis-cli --cluster create --cluster-replicas 0 -a 你的redis密码
    47.116.4.200:6379 47.116.4.200:6380 47.116.4.200:6381

    其中参数:

    • ① -replicas 0 表示创建集群的方式,以0个从机的方式创建集群(此处即为创建仅有三个主机的集群)。
    • ②-a参数填写redis服务器的密码(没有设置密码可以不写-a)
    • ③最后面跟的是服务器的ip和端口号。
      在这里插入图片描述

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

  • 集群之前的连接redis方式为:redis-cli -p 端口号
  • 集群连接redis方式为:redis-cli -c -p 端口号(使用-c参数表示 采用集群策略连接。因为是无中心化,所以连接任何一个节点(如6379、6380、6381)都可以)

在这里插入图片描述

⑥通过 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主机的从机

  • 此处的47.116.4.200:6389为目标从机及其端口号
  • 此处的47.116.4.200:6379为目标主机及其端口号
  • slave 表示此操作要添加从节点
  • cluster-master-id 主机的id: 要添加到哪一个主节点,集群中主机的id可以通过cluster nodes查看
  • -a :如果设置了redis密码,需要-a参数并填入密码
    在这里插入图片描述

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

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

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

  • 6379为主机,6389为从机
  • 6380为主机,6390为从机
  • 6381为主机,6391为从机

slots(插槽)

  • 一个 Redis 集群包含 16384 个插槽(hash slot), 数据库中的每个键都属于这 16384 个插槽的其中一个。

  • 插槽用来把值平均分配到不同主机中去,达到分担压力的效果。(比如set k1 v1操作的时候,会计算k1所在插槽值,根据各节点管辖的插槽范围,放入相应的节点中去)

  • 集群使用公式 CRC16(key) % 16384 计算键 key 属于哪个槽

  • 集群中的每个节点负责处理一部分插槽。 如下图:
    在这里插入图片描述
    上图中的当前集群有三个主节点, 其中:

    • 节点 6379 负责处理 0 号至 5460 号插槽。
      节点 6380 负责处理 5461 号至 10922 号插槽。
      节点 6381 负责处理 10923 号至 16383 号插槽。


在集群中录入值

①录入单个值
在这里插入图片描述
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 )

  • cluster-require-full-coverage 为yes,那么 某一段插槽的主从都挂掉时,整个集群都挂掉
  • cluster-require-full-coverage 为no ,那么 某一段插槽的主从都挂掉时,只是该段插槽数据不能使用,也无法存储;其他段插槽依旧正常提供服务。

Redis集群的优缺点

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

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

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

--结束END--

本文标题: Redis集群(Cluster)

本文链接: https://www.lsjlt.com/news/385625.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis集群(Cluster)
    Redis集群 集群解决的问题代理主机和无中心化集群Redis集群的特点Redis集群环境搭建slots(插槽)在集群中录入值查询集群中的值故障恢复Redis集群的优缺点 集群解决的问...
    99+
    2023-08-31
    redis 数据库 服务器
  • redis 3.0 cluster 集群
    周氏一族,整理技术文档,给下一代留点教程......redis 3.0 cluster 安装篇,请看 http://zhoushouby.blog.51cto.com/9150272/1560400 本篇,是在 "redis 3.0 clu...
    99+
    2023-01-31
    集群 redis cluster
  • redis-cluster集群是什么?
    redis-cluster集群是什么?相信大部分人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,话不多说,一起往下看吧。不同于master-salve 或者 哨兵模式 cluster与他们最大的...
    99+
    2022-10-18
  • Redis Cluster集群部署搭建
    在Oracle的路上走了许多年,换换感觉,尝试一下新的知识,也是一个不错的感觉。Redis,一个超轻量化的内存数据库,只做一小块数据库功能实现,却非常优秀的一个产品。今天,就分享一下安装Redis集群的过程...
    99+
    2022-10-18
  • Docker Redis 5.0 集群(cluster)搭建
    一、准备工具 安装docker(来自官网) (1) 安装所需的软件包 $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 (2) 使用以下命令来设置稳定...
    99+
    2015-01-06
    Docker Redis 5.0 集群(cluster)搭建
  • 怎样关闭redis Cluster集群
    Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施(installation)。Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行这些命令需要在多个 Redi...
    99+
    2022-10-18
  • Redis中的Cluster集群介绍
    这篇文章主要介绍“Redis中的Cluster集群介绍”,在日常操作中,相信很多人在Redis中的Cluster集群介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Redi...
    99+
    2022-10-18
  • Redis集群(cluster模式)搭建
    目录 1、什么是集群 2、为什么使用 3、集群连接 4、redis cluster 如何分配这六个节点 5、集群搭建: 1、什么是集群 Redis 集群(包括很多小集群)实现了对Redis的水平扩容,即启动N个redis节点,将整个数...
    99+
    2023-09-05
    redis 数据库 java linux
  • Redis高可用集群redis-cluster详解
    哨兵模式主要解决了手动切换主从节点的问题 1 , 哨兵模式的缺陷 .主从节点切换的时候存在访问瞬断,等待时间较长, .只有一个master节点提供写,slave节点提供读,尽管写的效...
    99+
    2022-11-13
  • Redis Cluster 集群搭建你会吗
    三台机器 201、202、203,每台机器装两个 redis 实例,构建 redis cluster 集群。 1. 安装 添加 redis-cluster 目录,将 redis 压缩...
    99+
    2022-11-12
  • Redis6.0搭建集群Redis-cluster的方法
    此处以三台服务器部署为例,IP地址分别为192.168.124.23,192.168.124.24,192.168.124.25 使用普通用户ubuntu登录 总共三个主节点和三个从...
    99+
    2022-11-12
  • k8s部署redis cluster集群的实现
    目录Redis 介绍为什么要用Redis什么是Redis Cluster集群k8s以StatefulSet方式部署redis cluster集群:部署nfs创建pv部署redis初始...
    99+
    2022-11-12
  • Redis中cluster集群的示例分析
    这篇文章主要为大家展示了“Redis中cluster集群的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Redis中cluster集群的示例分析”这篇文...
    99+
    2022-10-18
  • Redis 6.X Cluster集群如何搭建
    这篇文章将为大家详细讲解有关Redis 6.X Cluster集群如何搭建,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 Part1Redis 6.X Cluster 集群搭建1下载解压可直接到...
    99+
    2023-06-15
  • redis cluster 集群搭建(增、删、改、查) :5.0.2
    环境简介: 1:centos 7 ; 2:redis version 5.0.2 ; 3: 安装方式:编译安装 ; 4:。。。 创建集群 节点IP地址 10.42.166.105:6379 1...
    99+
    2022-10-18
  • 怎么安装搭建redis cluster 4.0.9集群
    本篇内容主要讲解“怎么安装搭建redis cluster 4.0.9集群”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么安装搭建redis cluster 4...
    99+
    2022-10-18
  • 怎么安装和管理redis-cluster集群
    redis-cluster的安装管理环境介绍系统环境:Red Hat Enterprise Linux Server release 6.2 (Santiago)内核版本:Linux zxt-02.com ...
    99+
    2022-10-18
  • 学习Redis Cluster并手动搭建集群
    Redis Cluster采用虚拟槽分区,所有的键根据哈希函数映射到0~16383整数槽内,计算公式:slot=CRC16(key)&16383。槽是集群内数据管理和迁移的基本单位。采用大范围槽的主...
    99+
    2022-10-18
  • Redis Cluster集群动态扩容的实现
    目录一、引言 二、Cluster集群增加操作1、动态增加Master主服务器节点 2、动态增加Slave从服务器节点 三、Cluster集群删除操作 1、动态删除Slave从服务器节...
    99+
    2022-11-12
  • Redis cluster集群模式的原理解析
    redis cluster redis cluster是Redis的分布式解决方案,在3.0版本推出后有效地解决了redis分布式方面的需求 自动将数据进行分片,每个master上放...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作