尚硅谷redis7 90-92 redis集群分片之集群扩容

article/2025/8/10 8:45:25

90 redis集群分片之集群扩容

三主三从不够用了,进行扩容变为4主4从

问题:1.新建两个redis实例,怎么加入原有集群?2.原有的槽位分3段,又加进来一个槽位怎么算?

新建6387、6388两个服务实例配置文件+新建后启动

首先新建redisCluser6387.conf、redisCluser6388.conf文件:以redisCluser6387.conf为例

bind 0.0.0.0
daemonize yes
protected-mode no
port 6387
logfile "/myredis/cluster/cluster6387. log"
pidfile /myredis/cluster6387. pid
dir /myredis/cluster
dbfilename dump6387.rdb
appendonly yes
appendfilename "appendonly6387.aof"
requirepass 111111
masterauth 111111

cluster-enabled yes
cluster-config-file nodes-6387. conf
cluster-node-timeout 5000

启动87/88两个新的节点实例

此时他们自己都是独立的master

将新增的6387节点(空槽号)作为master节点加入原集群

将新增的6387作为master节点加入原有集群
redis-cli -a 密码 -- cluster add-node 市己实际IP地址:6387 自己实际IP地址:6381
6387 就是将要作为master新增节点
6381 就是原来集群节点里面的领路人,相当于6387拜拜6381的码头从而找到组织加入集群
redis-cli -a 111111 -- cluster add-node 192.168.111.174:6387 192.168.111.175:6381

检查集群情况第1次

使用 redis-cliRedis 集群节点进行健康检查(cluster check)

部分含义
redis-cliRedis 的命令行客户端工具
-a 111111使用密码 111111 连接(如果 Redis 开启了密码验证)
--cluster check检查集群状态
192.168.111.185:6381指定集群中任意一个节点(IP 和端口)作为入口

重新分派槽号(reshard)

命令:redis-cli -a 密码 -- cluster reshard IP地址:端口号
redis-cli -a 密码 -- cluster reshard 192.168.111.175:6381

部分含义
redis-cliRedis 客户端
-a 密码指定连接密码
--cluster reshard表示要对集群执行“重新分片”操作(即迁移 slot)
192.168.111.175:6381集群中任意一个节点(作为入口)

作用是:对 Redis 集群进行手动分片(reshard)操作,让某些槽(slots)从一个节点迁移到另一个节点。执行该命令后,它不会立刻迁移,而是进入交互模式,你需要输入更多信息。

执行流程(进入交互模式)后会问你:
  1. 要迁移多少个 slot?(如 1000)

    How many slots do you want to move (from 1 to 16384)?由于16384/4=4096 因此这里填4096

  2. 目标节点的 ID?

    谁来接收这些新分出来的槽位?找到6387的槽位ID进行输入

    What is the receiving node ID?

  3. 是否自动选择源节点?

    Please enter all the source node IDs. Type 'all' to use all the nodes as source nodes. 输入all

  4. 确认迁移(yes/no)

          输入yes

检查集群情况第2次

4主3从

槽号如何分派?

6387的槽号是3段,0-1364,5461-6826,10923-12287

为什么6387是3个新的区间,以前的master却还是连续的?
重新分配成本太高,所以前3家各自匀出来一部分,从6381/6382/6383三个旧节点分别匀出1364个坑位给新节点6387

为主节点6387分配从节点6388

命令:redis-cli -a 密码 -- cluster add-node ip:新slave端口 ip:新master端口 -- cluster-slave -- cluster-master-id 新主机节点ID

redis-cli -a 111111 -- cluster add-node 192.168.111.174:6388 192.168.111.174:6387 -- cluster-slave
-- cluster-master-id 4feb6a7ee0ed2b39ff86474cf4189ab2a554a40f ------- 这个是6387的编号,按照自己实际情况 

检查集群情况第3次

91 redis集群分片之集群缩容

1先清除从节点6388
2清出来的槽号重新分配给6381
3再删除6387
4 恢复成3主3从

目的:6387和6388下线

检查集群情况第一次,先获得从节点6388的节点ID

redis-cli -a 密码 -- cluster check 192.168.111.174:6388

从集群中将4号从节点6388删除

命令:redis-cli -a 密码 -- cluster del-node ip:从机端口 从机6388节点ID

redis-cli -a 111111 -- cluster del-node 192.168.111.174:6388 218e7b8b4f81be54ff173e4776b4f4faaf7c13da

将6387的槽号清空,重新分配,本例将清出来的槽号都给6381

redis-cli -a 111111 -- cluster reshard 192.168.111.175:6381

使用密码 111111 登录到 Redis 集群中的节点 192.168.111.175:6381,并对该 Redis 集群执行 手动分片迁移(reshard)操作

# 启动 reshard 工具
redis-cli -a 111111 --cluster reshard 192.168.111.175:6381

# 提示输入要迁移多少个槽(例如 1000)
How many slots do you want to move (from 1 to 16384)? 4096

# 提示输入目标节点的 Node ID(槽位迁移到哪个节点上)
What is the receiving node ID? 6381结点id,由它接受空出来的槽位

# 提示输入源节点 ID(要从哪些节点迁移槽位,可输入 all)
Please enter all the source node IDs.         6387结点id,告知删除6387
Type 'all' to use all the nodes as source nodes. all

Source node #1:4feb6a7ee0ed2b39ff86474cf4189ab2a554a40f
Source node #2:done

# 最后确认是否执行
Do you want to proceed with the proposed reshard plan (yes/no)? yes
 

检查集群情况第二次

redis-cli -a 111111 -- cluster check 192.168.111.175:6381

4096个槽位都指给6381,它变成了8192个槽位,相当于全部都给6381了,不然要输入3次,一锅端

6387变成了6381的从机

将6387删除

命令:redis-cli-a密码 -- cluster del-node ip:端口 6387节点ID

redis-cli -a 111111 -- cluster del-node 192.168.111.174:6387 4feb6a7ee0ed2b39ff86474cf4189ab2a554a40f

检查集群情况第三次,6387/6388被彻底祛除

redis-cli -a 111111 -- cluster check 192.168.111.175:6381

92 redis集群分片之小总结

集群常用操作命令和CRC16算法分析

不在同一个slot槽位下的多键操作支持不好,通识占位符登场

mget k1 k2 k3  //在集群环境下报错

不在同一个slot槽位下的键值无法使用mset,mget等多建操作

可以通过{}来定义同一组的概念,使Key中{}内相同内容的键值对放到一个slot槽位去。

将3个k整体打包到同一个组z存放到8157这一个槽位上。此时可以读取:


Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽。集群的每个节点负责一部分hash槽

CRC16是由C语言源码编辑的

常用命令

集群是否完整才能对外提供服务的操作设置

        cluster-require-full-coverage

默认YES,现在集群架构是3主3从的redis cluster由3个master平分16384个slot,每个master的小集群负责1/3的slot,对应一部分数据。cluster-require-full-coverage: 默认值yes,即需要集群完整性。方可对外提供服务 通常情况,如果这3个小集群中,任何一个(1主1从)挂了,你这个集群对外可提供的数据只有2/3了,整个集群是不完整的,redis默认在这种情况下,是不会对外提供服务的。
如果你的诉求是,集群不完整的话也需要对外提供服务,需要将该参数设置为no,这样的话你挂了的那个小集群是不行了,但是其他的小集群仍然可以对外提供服务。

CLUSTER COUNTKEYSINSLOT 槽位数字编号

查看该槽位是占位还是空闲 1被占用 0没被占用

 

CLUSTER KEYSLOT 键名称

查看key应该存在哪个槽位上


http://www.hkcw.cn/article/stOJtwNiJx.shtml

相关文章

Proteus寻找元器件(常见)

一 元件库 二 找元件 1 主控 32 51 输入 stm32 AT89c51 2 找屏幕 oled 3 找按键button 4 电阻、电容 res cap 5 电机驱动 l298n 6 电机 motor 7 滑动变阻器 pot 8 找电源和 GND 9 找晶振 选择 D 开头的 CRYSTAL 10 网络标签

修改Cinnamon主题

~/.themes/Brunnera-Dark/cinnamon/cinnamon.css 1.修改 Tooltip 圆角大小,边框颜色,背景透明度 #Tooltip { border-radius: 10px; color: rgba(255, 255, 255, 0.8); border: 1px solid rgba(255, 255, 255, 0.6); background-color: rgba(0,…

从一到无穷大 #46:探讨时序数据库Deduplicate与Compaction的设计权衡

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 引言Compaction AlgorithmsCompact Execution Flow Based On VeloxLocalMergeSource的…

突破DIFY沙箱限制,高效处理大文件

DIFY获取传入文件路径并处理文件内容 由于dify代码沙箱自身的安全限制,用户在沙箱环境下的代码无法实现对系统文件的写入和读取操作。如果想利用dify来处理文件数据,就不得不使用官方提供的文档提取器插件,但是使用该插件提取如.xlsx,.csv等…

比较云计算的四种部署模式:哪个是最佳选择?

在数字化转型浪潮中,企业面临的关键决策之一是如何选择云计算部署模式。公有云、私有云、社区云和混合云并非简单的技术选项,而是关乎业务架构的战略选择。每种模式都代表着不同的资源控制程度、成本结构和安全边界,理解其本质差异是制定有效…

云计算Linux Rocky day02(安装Linux系统、设备表示方式、Linux基本操作)

云计算Linux Rocky day02(安装Linux系统、设备表示方式、Linux基本操作) 目录 云计算Linux Rocky day02(安装Linux系统、设备表示方式、Linux基本操作)1、虚拟机VMware安装Rocky2、Linux命令行3、Linux Rocky修改字体大小和背景颜…

项目管理工具Maven

Maven的概念 什么是Maven 什么是依赖管理 对第三方依赖包的管理,可以连接互联网下载项目所需第三方jar包。 对自己开发的模块的管理,可以像引用第三方依赖包一样引用自己项目的依赖包。 什么是项目构建 一、项目构建的定义 项目构建是将源代码经过编…

使用原生前端技术封装一个组件

封装导航栏 navbar-template.html <header><nav><ul><li><a href"index.html"><i class"fas fa-home"></i> 主页</a></li><li><a href"#"><i class"fas fa-theate…

mac mini m4命令行管理员密码设置

附上系统版本图 初次使用命令行管理员&#xff0c;让输入密码&#xff0c;无论是输入登录密码还是账号密码&#xff0c;都是错的&#xff0c;百思不得其解&#xff0c;去网上搜说就是登录密码啊 直到后来看到了苹果官方的文档 https://support.apple.com/zh-cn/102367 https…

使用Vditor将Markdown文档渲染成网页(Vite+JS+Vditor)

1. 引言 编写Markdown文档现在可以说是程序员的必备技能了&#xff0c;因为Markdown很好地实现了内容与排版分离&#xff0c;可以让程序员更专注于内容的创作。现在很多技术文档&#xff0c;博客发布甚至AI文字输出的内容都是以Markdown格式的形式输出的。那么&#xff0c;Mar…

黑马k8s(十七)

一&#xff1a;高级存储 1.高级存储-pv和pvc介绍 2.高级存储-pv 3.高级存储-pvc 最后一个改成5gi pvc3是没有来绑定成功的 pv3没有绑定 删除pod、和pvc&#xff0c;观察状态&#xff1a; 4.高级存储-pc和pvc的生命周期 二&#xff1a;配置存储 1.配置存储-ConfigMap 2.配…

【ABAP 基本数据类型】

ABAP 基本数据类型 一、数值类型 1.1 整数类型 类型关键字长度值范围示例代码标准整型I4字节-2,147,483,648 到 2,147,483,647DATA lv_int TYPE i VALUE 100.短整型INT22字节-32,768 到 32,767DATA lv_short TYPE int2 VALUE -500.无符号整型INT11字节0 到 255DATA lv_flag T…

LearnOpenGL-笔记-其十一

Normal Mapping 又到了介绍法线贴图的地方&#xff0c;我感觉我已经写了很多遍了... 法线贴图用最简单的话来介绍的话&#xff0c;就是通过修改贴图对应物体表面的法线来修改光照效果&#xff0c;从而在不修改物体实际几何形状的前提下实现不同于物体几何形状的视觉效果。 因…

Scratch节日 | 粽子收集

端午节怎么过&#xff1f;当然是收粽子啦&#xff01;这款 粽子收集 小游戏&#xff0c;让你一秒沉浸节日氛围&#xff0c;轻松收集粽子&#xff0c;收获满满快乐&#xff01; &#x1f3ae; 玩法介绍f 开始游戏&#xff1a;点击开始按钮&#xff0c;游戏正式开始&#xff01;…

Linux(9)——进程(控制篇——下)

三、进程等待 1&#xff09;进程等待的必要性 之前提过子进程退出&#xff0c;父进程如果不读取子进程的退出信息&#xff0c;就可能造成“僵尸进程”的问题&#xff0c;从而造成内存泄漏的问题。再者&#xff0c;一旦子进程进入了僵尸状态&#xff0c;那就连kill -9都杀不亖…

Scratch节日 | 六一儿童节

六一儿童节到啦&#xff01;快来体验这款超简单又超好玩的 六一儿童节 小游戏吧&#xff01;只需要一只鼠标&#xff0c;就能尽情释放你的创意&#xff0c;绘出属于你自己的缤纷世界&#xff01; &#x1f3ae; 玩法介绍 鼠标滑动&#xff1a;在屏幕上随意滑动鼠标&#xff0c…

高原户外制氧机的优势特点有哪些

一、便携设计&#xff0c;突破环境限制 高原户外制氧机以轻量化、紧凑化设计为核心&#xff0c;重量普遍控制在3kg以内&#xff0c;可轻松装入背包或车载空间。采用折叠式吸氧管与一体化电源设计&#xff0c;支持太阳能充电板或车载供电&#xff0c;满足徒步、骑行、自驾等多元…

harmonyos实战关于静态图片存放以及image图片引入

编写demo轮播图的时候&#xff0c;用到图片&#xff0c;想到静态资源具体存放在哪里&#xff1f;&#xff1f; 官网工程目录结构解释&#xff1a;文档中心 Resource资源 使用资源格式可以跨包/跨模块引入图片&#xff0c;resources文件夹下的图片都可以通过$r资源接口读取到并…

LINUX530 rsync定时同步 环境配置

rsync定时代码同步 环境配置 关闭防火墙 selinux systemctl stop firewalld systemctl disable firewalld setenforce 0 vim /etc/selinux/config SELINUXdisable设置主机名 hostnamectl set-hostname code hostnamectl set-hostname backup设置静态地址 cd /etc/sysconfi…

超低延迟与高稳定性的行业领先直播解决方案

随着实时音视频技术的不断发展&#xff0c;直播行业的需求逐渐从单一的流媒体传输向更高效、更稳定、更加智能化的方向转变。作为一家创新型技术公司&#xff0c;上海视沃信息科技有限公司凭借其自研的大牛直播SDK&#xff0c;为各行业提供了一款极致体验的、低延迟、高稳定的音…