redis的分片集群模式

redis的分片集群模式

1 主从哨兵集群的问题和分片集群特点

主从哨兵集群可应对高并发写和高可用性,但是还有2个问题没有解决:
(1)海量数据存储
(2)高并发写的问题
使用分片集群可解决,分片集群的特点:
(1)集群中有多个master,每个master保存不同的数据。(实现海量数据存储)
(2)每个master都可以有多个slave节点。(实现高并发读)
(3)master之间通过ping检测彼此健康状态。(替代主从集群中的哨兵,多个master认为某个master客观下线,可在每个master和自己的slave节点之间进行主从切换,满足高可用性)
(4)客户端请求(redisTemplate)可以访问集群任意节点,最终都会被转发到正确的节点。

在这里插入图片描述

2 搭建redis分片集群

分片集群需要的节点数较多,搭建一个最小的分片集群,包含3个master节点,每个master节点包含一个slave节点。采用一主一从模式,总共3个master和3个slave节点。
可在同一个虚拟机中开启6个redis实例,模拟分片集群。

编写redis.conf文件:
在这里插入图片描述

(1)分别启动6个redis

(2)创建集群

# 分片集群操作相关的命令
redis-cli --cluster help# 创建集群
redis-cli --cluster create --cluster-replicas 1 节点ip:端口号  节点ip2:端口号   ......  节点ip6:端口号

create:创建集群
–cluster-replicas 1:指定集群中每个master的副本个数为1,节点总数(6)除以(1+1)= 3 ,说明maste的数量为3,因此节点列表的前3个就是master节点,其余是slave节点,随机分配到不同的master上。

# 查看集群状态
redis-cli -p 端口号 cluster nodes
## 展示各个节点

在这里插入图片描述

3 分片集群中的散列插槽

散列插槽(设计目的:有利于数据的转移)

redis会把每一个master节点映射到0~16383共16384个插槽(hash slot)上,查看集群信息时就能看到:(每一个master节点都会占用一部分的插槽)。
数据key不是与节点绑定的,而是与插槽绑定。redis会根据key的有效部分计算出插槽值,有以下2种情况:
(1)key中包含“{}”,且“{}”中至少包含1个字符,“{}”中的部分是有效部分
(2)key中不包含“{}”,整个key都是有效部分。

例如:key是num,就会根据num计算;如果是{itcast}num,则根据itcast计算。计算方式是利用CRC16算法得到一个hash值,然后对16384取余(取余的结果始终在0~16383中间),得到的结果就是slot值。

# 使用集群模式  连接redis,set值(-c)
redis-cli -c -p 7001

set a 1的时候 a的计算结果的slot(插槽)等于15495,会自动跳转到存储到这个redis的散列插槽中。
在这里插入图片描述

如何实现将某一类数据都存储到指定的redis的主节点上

这一类数据可以使用相同的有效部分,例如key都以{typeId}为前缀。

4 分片集群中的集群伸缩

集群伸缩:增加和删除集群中节点

向集群中增加一个新的master节点,并向num=10

需求:
将已有的那个redis实例的插槽移动到新增master节点的插槽中,将已有的那个redis实例下线(如:服务器老登)

# 
redis-cli --cluster --help
# 默认是master节点,当然再在后面使用指定是master还是slave以及是谁的slave,添加新的redis实例节点默认是没有插槽值的 (在connected后面的是slot插槽)
redis-cli --cluster add-node 新增节点的ip:端口号 redis分片集群中已有的ip:端口号
# 重新分片 reshard 从其他节点的插槽中移到指定节点的部分插槽值   按照提示一步一步操作  注意填入redis实例的id(可使用cluster nodes查看)
redis-cli --cluster reshard

5 分片集群中的故障转移

其中一个master宕机(可以主动停机)–自动故障转移

# 停机后 该节点断开连接  从节点变为master节点  该节点重启后,变为slave节点
redis-cli -p 端口号 shutdown

手动故障转移(一个redis实例节点服务器老旧需要升级)–数据迁移

将某个slave节点机器替换现在的master节点
在slave节点的机器上执行cluster failover命令

# 可让当前slave节点成为master节点,之前的master节点变为slave节点
cluster failover

6 redisTemplate访问分片集群

(1)引入redis的starter依赖

(2)配置文件中配置redis分片集群的每个节点的地址

在这里插入图片描述

(3)配置主从读写分离

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/68378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nuxt:利用public-ip这个npm包来获取公网IP

目录 一、安装public-ip包1.在Vue组件中使用2.在Nuxt.js插件中使用public-ip 一、安装public-ip包 npm install public-ip1.在Vue组件中使用 你可以在Nuxt.js的任意组件或者插件中使用public-ip来获取公网IP。下面是在一个Vue组件中如何使用它的例子&#xff1a; <template…

AI软件栈:LLVM分析(一)

文章目录 AI 软件栈后端编译LLVM IRLLVM的相关子项目AI 软件栈后端编译 AI软件栈的后端工作通常与硬件架构直接相关,为了实现一个既能适配现代编程语言、硬件架构发展的目标,所以提出了LLVM具备多阶段优化能力提供基础后端描述,便于进行编译器开发兼容标准编译器的行为LLVM …

搭建Spring Boot开发环境

JDK&#xff08;1.8及以上版本&#xff09; Apache Maven 3.6.0 修改settings.xml 设置本地仓库位置 <localRepository>D:/repository</localRepository> 设置远程仓库镜像 <mirror><id>alimaven</id><name>aliyun maven</name&…

智慧校园在职业学校的实施与展望

随着信息技术的发展&#xff0c;智慧校园的概念逐渐走进人们的视野。智慧校园不仅是一个技术层面的概念&#xff0c;更是教育理念的一次革新。对于职业教育而言&#xff0c;智慧校园的应用更是具有重要意义。通过引入物联网、大数据等先进技术&#xff0c;可以实现教学资源的高…

【Flutter】旋转元素(Transform、RotatedBox )

这里写自定义目录标题 Transform旋转元素可以改变宽高约束的旋转 - RotatedBox Transform旋转元素 说明&#xff1a;Transform旋转操作改变了元素的方向&#xff0c;但并没有改变它的布局约束。因此&#xff0c;虽然视觉上元素看起来是旋转了&#xff0c;但它仍然遵循原始的宽…

Excel中LOOKUP函数的使用

文章目录 VLOOKUP&#xff08;垂直查找&#xff09;&#xff1a;HLOOKUP&#xff08;水平查找&#xff09;&#xff1a;LOOKUP&#xff08;基础查找&#xff09;&#xff1a;XLOOKUP&#xff08;高级查找&#xff0c;较新版本Excel提供&#xff09;&#xff1a; 在Excel中&…

React第二十六章(createPortal)

createPortal 注意这是一个API&#xff0c;不是组件&#xff0c;他的作用是&#xff1a;将一个组件渲染到DOM的任意位置&#xff0c;跟Vue的Teleport组件类似。 用法 import { createPortal } from react-dom;const App () > {return createPortal(<div>小满zs<…

AI学习(vscode+deepseek+cline)

1、网页生成不成功时&#xff0c;直接根据提示让模型替你解决问题 2、http://localhost:3000 拒绝链接时&#xff0c;cmd输入命令InetMgr&#xff0c;网站右键新建-配置你的网页代码物理地址&#xff0c;这里我还输入本机登录名及密码了&#xff0c;并把端口地址由默认80修改为…

k8s 蓝绿发布、滚动发布、灰度发布

在Kubernetes&#xff08;k8s&#xff09;中&#xff0c;蓝绿发布、滚动发布、灰度发布&#xff08;金丝雀发布&#xff09;是三种常见的应用部署和更新策略。下面将分别对这几种发布方式进行说明&#xff0c;并给出相应的例子。 蓝绿发布 蓝绿发布是一种无缝切换版本的部署策…

c++面试:类定义为什么可以放到头文件中

这个问题是刚了解预编译的时候产生的疑惑。 声明是指向编译器告知某个变量、函数或类的存在及其类型&#xff0c;但并不分配实际的存储空间。声明的主要目的是让编译器知道如何解析程序中的符号引用。定义不仅告诉编译器实体的存在&#xff0c;还会为该实体分配存储空间&#…

【R语言】数学运算

一、基础运算 R语言中能实现加、减、乘、除、求模、取整、取绝对值、指数、对数等运算。 x <- 2 y <- 10 # 求模 y %% x # 整除 y %/% x # 取绝对值 abs(-x) # 指数运算 y ^x y^1/x #对数运算 log(x) #log()函数默认情况下以 e 为底 双等号“”的作用等同于identical(…

DeepSeek学术写作测评第一弹:论文润色,中译英效果如何?

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 最近风很大的DeepSeek&#xff0c;持续火出圈&#xff0c;引起了硅谷AI圈的热议。很多学员让娜姐测评一下对于平时需要学术写作润色的论文党&#xff0c;效果究竟怎么样&…

MySQL常用数据类型和表的操作

文章目录 (一)常用数据类型1.数值类2.字符串类型3.二进制类型4.日期类型 (二)表的操作1查看指定库中所有表2.创建表3.查看表结构和查看表的创建语句4.修改表5.删除表 (三)总代码 (一)常用数据类型 1.数值类 BIT([M]) 大小:bit M表示每个数的位数&#xff0c;取值范围为1~64,若…

【数据结构】_C语言实现不带头非循环单向链表

目录 1. 链表的概念及结构 2. 链表的分类 3. 单链表的实现 3.1 SList.h头文件 3.2 SList.c源文件 3.3 Test_SList.c测试文件 关于线性表&#xff0c;已介绍顺序表&#xff0c;详见下文&#xff1a; 【数据结构】_顺序表-CSDN博客 本文介绍链表&#xff1b; 基于顺序表…

WPF进阶 | WPF 数据绑定进阶:绑定模式、转换器与验证

WPF进阶 | WPF 数据绑定进阶&#xff1a;绑定模式、转换器与验证 一、前言二、WPF 数据绑定基础回顾2.1 数据绑定的基本概念2.2 数据绑定的基本语法 三、绑定模式3.1 单向绑定&#xff08;One - Way Binding&#xff09;3.2 双向绑定&#xff08;Two - Way Binding&#xff09;…

人工智能在医疗领域的应用有哪些?

人工智能在医疗领域的应用十分广泛&#xff0c;涵盖了诊断、治疗、药物研发等多个环节&#xff0c;以下是一些主要的应用&#xff1a; 医疗影像诊断 疾病识别&#xff1a;通过分析 X 光、CT、MRI 等影像&#xff0c;人工智能算法能够识别出肿瘤、结节、骨折等病变&#xff0c;…

【Android】布局文件layout.xml文件使用控件属性android:layout_weight使布局较为美观,以RadioButton为例

目录 说明举例 说明 简单来说&#xff0c;android:layout_weight为当前控件按比例分配剩余空间。且单个控件该属性的具体数值不重要&#xff0c;而是多个控件的属性值之比发挥作用&#xff0c;例如有2个控件&#xff0c;各自的android:layout_weight的值设为0.5和0.5&#xff0…

Ubuntu 24.04 安装 NVIDIA Container Toolkit 全指南:让Docker拥抱GPU

Ubuntu 24.04 安装 NVIDIA Container Toolkit 全指南&#xff1a;让Docker拥抱GPU 前言一、环境准备1.1 验证驱动状态 二、安装NVIDIA Container Toolkit2.1 添加官方仓库2.2 执行安装 三、配置Docker运行时3.1 更新Docker配置 四、验证安装结果4.1 运行测试容器 五、实战应用 …

Qt中Widget及其子类的相对位置移动

Qt中Widget及其子类的相对位置移动 最后更新日期&#xff1a;2025.01.25 下面让我们开始今天的主题… 一、开启篇 提出问题&#xff1a;请看上图&#xff0c;我们想要实现的效果是控件黄色的Widge&#xff08;m_infobarWidget&#xff09;t随着可视化窗口&#xff08;m_glWidge…

3287. 求出数组中最大序列值

3287. 求出数组中最大序列值 题目链接&#xff1a;3287. 求出数组中最大序列值 代码如下&#xff1a; //参考链接&#xff1a;https://leetcode.cn/problems/find-the-maximum-sequence-value-of-array/solutions/3037275/qiu-chu-shu-zu-zhong-zui-da-xu-lie-zhi-b-bhnk cla…