Redis 7.x 系列【30】集群管理命令

有道无术,术尚可求,有术无道,止于术。

本系列Redis 版本 7.2.5

源码地址:https://gitee.com/pearl-organization/study-redis-demo

文章目录

    • 1. 概述
    • 2. 集群信息
      • 2.1 CLUSTER INFO
    • 3. 节点管理
      • 3.1 CLUSTER MYID
      • 3.2 CLUSTER NODES
      • 3.3 CLUSTER REPLICAS
      • 3.4 CLUSTER FORGET
      • 3.5 CLUSTER MEET
    • 4. 哈希槽管理
      • 4.1 CLUSTER SLOTS
      • 4.2 CLUSTER KEYSLOT
      • 4.3 CLUSTER COUNTKEYSINSLOT
      • 4.4 CLUSTER DELSLOTS
      • 4.5 CLUSTER ADDSLOTS
      • 4.6 CLUSTER SETSLOT
      • 4.7 CLUSTER FLUSHSLOTS
    • 5. 其他
      • 5.1 CLUSTER FAILOVER

1. 概述

集群管理命令是用于管理和维护 Redis 集群,允许用户执行如查看集群信息、添加或删除节点、重新分片等操作。

所有命令:

命名描述
ASKING用于 ASK 重定向
CLUSTER ADDSLOTS将一个或多个槽指派给当前节点
CLUSTER ADDSLOTSRANGE将指定范围内的槽指派给当前节点
CLUSTER BUMPEPOCH提升集群的 config epoch
CLUSTER COUNT-FAILURE返回指定节点当前未过期的失败报告的数量
CLUSTER COUNTKEYSINSLOT返回指定槽中键的数量
CLUSTER DELSLOTS移除一个或多个槽对当前节点的指派
CLUSTER DELSLOTSRANGE移除范围内的槽对当前节点的指派
CLUSTER FAILOVER手动触发故障转移
CLUSTER FLUSHSLOTS移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点
CLUSTER FORGET从集群中移除指定节点ID的节点
CLUSTER GETKEYSINSLOT返回指定槽中的键
CLUSTER INFO打印集群的详细信息,包括集群状态、节点数量、槽分配情况
CLUSTER KEYSLOT返回指定键存储的哈希槽
CLUSTER LINKS输出所有集群节点之间对等连接信息
CLUSTER MEET将指定IP和端口的节点添加到集群中
CLUSTER MYID查看当前节点的运行ID
CLUSTER MYSHARDID查看当前节点的分片ID
CLUSTER NODES列出集群当前已知的所有节点及其相关信息
CLUSTER REPLICAS返回指定主节点进行复制的从节点列表
CLUSTER REPLICATE将当前节点设置为指定节点ID的节点的从节点
CLUSTER RESET重置集群节点的状态
CLUSTER SAVECONFIG将节点的配置文件保存到硬盘上
CLUSTER SET-CONFIG-EPOCH在新节点中设置特定的配置时期
CLUSTER SETSLOT改变接收节点中哈希槽的状态
CLUSTER SHARDS获取集群中所有分片信息
CLUSTER SLAVES查看指定主节点的所有从节点列表
CLUSTER SLOTS查询集群哈希槽与节点映射关系
READONLY在从节点上开启只读模式,读取可能不是最新的数据
READWRITE取消之前通过 READONLY 命令设置的只读模式

2. 集群信息

2.1 CLUSTER INFO

获取集群的当前状态和各种统计信息。

关键信息说明:

  • cluster_state:表示集群的当前状态, ok 表示集群运行正常,其他值可能表示集群存在问题
  • cluster_slots_assigned:已分配的槽位数量,理想情况下应为 16384,表示所有槽位都已被分配。
  • cluster_slots_ok:正常运行的槽位数量,应与 cluster_slots_assigned 相同,除非有槽位因故障而无法正常工作。
  • cluster_slots_pfail:疑似失败的槽位数量,这些槽位可能由于网络问题等原因暂时无法访问。
  • cluster_slots_fail:运行失败的槽位数量,这些槽位由于某种原因(如节点故障)已经完全无法访问。
  • cluster_known_nodes:集群中已知节点的数量,这个数量应等于集群中所有正常工作的节点数。

示例:

主节点(192.168.56.101:6381)>cluster info
"cluster_state:ok
cluster_slots_assigned:16384 
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6 
cluster_size:3  
cluster_current_epoch:9
cluster_my_epoch:3
cluster_stats_messages_ping_sent:42283
cluster_stats_messages_pong_sent:42739
cluster_stats_messages_fail_sent:4
cluster_stats_messages_update_sent:3
cluster_stats_messages_sent:85029
cluster_stats_messages_ping_received:42739
cluster_stats_messages_pong_received:50471
cluster_stats_messages_fail_received:1
cluster_stats_messages_received:93211
total_cluster_links_buffer_limit_exceeded:0
"

3. 节点管理

3.1 CLUSTER MYID

查看当前节点的运行 IDRun ID),运行 ID 是集群中每个节点唯一的标识符,用于集群内部的管理和通信。在节点重启后可能会改变,因此它不能作为节点的永久标识符。但在节点运行期间,运行 ID 是唯一的,并且不会改变。在进行集群管理操作时,如添加、删除节点或进行故障转移等会用到该 ID

示例:

主节点(192.168.56.101:6381)>CLUSTER MYID
"9f9c30c3f73106e256fdec27264fc8129e1287fd"

3.2 CLUSTER NODES

查看集群当前已知的所有节点以及节点信息,对于集群的管理、监控和故障排查都非常重要。

示例:

主节点(192.168.56.101:6381)>CLUSTER NODES
"9f9c30c3f73106e256fdec27264fc8129e1287fd 192.168.56.101:6381@16381 myself,master - 0 1721405084000 3 connected 12288-16383
e909dc338f4c2fc7687cf4426d3b95956a90a8a8 192.168.56.101:6380@16380 master - 0 1721405088116 9 connected 0-1364 5461-12287
ce27fa445e987f75bddeeb68fc6fe440678ad1bb 192.168.56.101:6382@16382 master - 0 1721405087000 7 connected 1365-5460
0f1d8d6459ac4252636cb4b8e1764de9e277411c 192.168.56.101:6390@16390 slave 9f9c30c3f73106e256fdec27264fc8129e1287fd 0 1721405088000 3 connected
724c7b874dc0c37a462cd5ab59325203344f8008 192.168.56.101:6379@16379 slave ce27fa445e987f75bddeeb68fc6fe440678ad1bb 0 1721405090177 7 connected
b5bde236f14f21f530a7095aaef3a98109009324 192.168.56.101:6383@16383 slave e909dc338f4c2fc7687cf4426d3b95956a90a8a8 0 1721405089144 9 connected"

各部分信息说明:

  • ce27fa445e987f75bddeeb68fc6fe440678ad1bb:节点ID,每个节点的唯一标识符
  • 192.168.56.101:6382@16382:节点的IP地址、客户端连接端口号、集群总线端口号,用于节点间的通信
  • master:节点在集群中的角色,可以是主节点(master)或从节点(slave
  • - 0:节点标记,- 0 表示没有特殊的标记,在某些情况下,这里可能会显示 failmyself或其他状态标志
  • 1721405087000 :节点最后一次发送心跳消息到当前节点的时间戳(以毫秒为单位)
  • 7:配置纪元(config epoch)的编号,是一个递增的计数器,用于在集群重新配置(如故障转移)时跟踪集群的状态
  • connected :节点的当前状态,如在线(connected)、疑似失败(pfail)、失败(fail)等
  • 1365-5460:分配的哈希槽

3.3 CLUSTER REPLICAS

返回主节点进行复制的从节点列表。

示例:

主节点(192.168.56.101:6381)>CLUSTER REPLICAS 9f9c30c3f73106e256fdec27264fc8129e1287fd1)  "0f1d8d6459ac4252636cb4b8e1764de9e277411c 192.168.56.101:6390@16390 slave 9f9c30c3f73106e256fdec27264fc8129e1287fd 0 1721406870213 3 connected"

3.4 CLUSTER FORGET

从集群中移除指定的节点。

示例:

主节点(192.168.56.101:6381)>CLUSTER FORGET e909dc338f4c2fc7687cf4426d3b95956a90a8a8
"OK"

注意事项:

  • 只是在集群中移除,并不会关闭该节点或停止其运行
  • 请确保被移除的节点确实不再需要参与集群的运行,并且已经做好了相应的数据备份和迁移工作

查看集群信息:

在这里插入图片描述

3.5 CLUSTER MEET

用于将支持集群的不同 Redis 节点连接成一个工作集群。

节点默认情况下不相互信任,被视为未知节点,需要让其他节点接受并加入到集群,目前提供了两种方式:

  • CLUSTER MEET :强制一个节点与另一个节点建立联系
  • Gossip:使用流言协议进行传播

示例,将上面被移除的节点重新加入到集群:

主节点(192.168.56.101:6381)>CLUSTER MEET 192.168.56.101 6380
"OK"

4. 哈希槽管理

4.1 CLUSTER SLOTS

获取集群中所有哈希槽的分配情况。返回值为嵌套数组,每个嵌套数组包含一个哈希槽的范围,以及负责该槽范围的节点的 IP 地址和端口号。

示例:

主节点(192.168.56.101:6381)>CLUSTER SLOTS1)    1)   "0"2)   "1364"3)      1)    "192.168.56.101"2)    "6380"3)    "e909dc338f4c2fc7687cf4426d3b95956a90a8a8"4)    4)      1)    "192.168.56.101"2)    "6383"3)    "b5bde236f14f21f530a7095aaef3a98109009324"4)    2)    1)   "1365"

4.2 CLUSTER KEYSLOT

返回给定 key 存储的哈希槽编号。

示例:

主节点(192.168.56.101:6381)>CLUSTER KEYSLOT aa
"1180"

4.3 CLUSTER COUNTKEYSINSLOT

返回指定哈希槽中 key 的数量。只查询连接节点的本地数据集,如果指定的 slot 被分配在别的节点上,就会返回 0

示例:

主节点(192.168.56.101:6381)>CLUSTER COUNTKEYSINSLOT 1180
"1"

4.4 CLUSTER DELSLOTS

将接收命令的节点上的一组哈希槽进行移除。

示例:

主节点(192.168.56.101:6381)>CLUSTER DELSLOTS 12288 12299 12300 
"OK"

4.5 CLUSTER ADDSLOTS

将一组哈希槽分配给接收命令的节点。如果命令执行成功,该节点将指定的哈希槽映射到自己身上,并开始广播新的配置。

注意事项:

  • 如果哈希槽已被分配给其他节点,会抛出异常
  • 如果同一个槽位被多次指定,则该命令会失败

示例,将上面移除的哈希槽,重新分配给当前节点:

主节点(192.168.56.101:6381)>CLUSTER ADDSLOTS 12288 12299 12300
"OK"

4.6 CLUSTER SETSLOT

用于重新分片哈希槽,以不同的方式改变接收节点中哈希槽的状态。

命令格式:

CLUSTER SETSLOT slot <IMPORTING node-id | MIGRATING node-id |NODE node-id | STABLE>

子命令说明:

  • MIGRATING:将哈希槽设置为迁移状态。通常用于在源节点上,表明该槽位的数据正在迁移到其他节点。
  • IMPORTING:将哈希槽设置为导入状态。这通常用于在目标节点上设置槽位,表明该节点正在从其他节点导入数据。
  • STABLE :清除哈希槽上的任何导入/迁移状态。这通常用于在迁移过程完成后,将槽位状态重置为稳定状态。
  • NODE :将哈希槽分配到另一个节点。可能存在一些限制,建议使用 CLUSTER ADDSLOTS 命令来分配槽位。

4.7 CLUSTER FLUSHSLOTS

移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。

示例:
在这里插入图片描述

5. 其他

5.1 CLUSTER FAILOVER

用于手动触发故障转移过程,强制将从节点升级为主节点。手动故障转移是一种特殊的故障转移方式,它通常在没有实际故障发生时执行,但我们希望以安全的方式(没有任何数据丢失的风险)将当前的主节点与其从节点之一进行交换。

命令格式:

CLUSTER FAILOVER [FORCE | TAKEOVER]

参数说明:

  • 无参:尝试与当前的主节点进行协商,并遵循标准的故障转移流程
  • FORCE:从节点会跳过与主节点的协商步骤,并尽快启动故障转移过程
  • TAKEOVER:它允许从节点单方面地成为主节点,而不需要等待集群中其他主节点的授权或投票

注意事项:

  • 只能在从节点上执行
  • FORCETAKEOVER 参数会绕过正常的故障转移流程,可能会导致意外的后果
  • 建议自动处理故障转移,而不是手动干预

示例,让从节点升级为主节点:

在这里插入图片描述

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

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

相关文章

扫雷-C语言

一、前言&#xff1a; 众所周知&#xff0c;扫雷是一款大众类的益智小游戏&#xff0c;它的游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子&#xff0c;同时避免踩雷&#xff0c;踩到一个雷即全盘皆输。 今天&#xff0c;我们的目的就是通过C语言来实现一个简…

SpringBoot源码(1)ApplicationContext和BeanFactory

1、调用getBean方法 SpringBootApplication public class SpringBootDemoApplication {public static void main(String[] args) {ConfigurableApplicationContext applicationContext SpringApplication.run(SpringBootDemoApplication.class, args);applicationContext.get…

关于使用宝兰德bes中间件进行windows部署遇到的问题——license不存在

报错信息 日志文件中是这么报错的 遇到的具体情况&#xff1a; 实例按照**的文档手册正常步骤下去节点部署的时候没有报错&#xff0c;成功启动&#xff0c;但是日志里会有报错信息&#xff0c;也是license不存在实例创建的时候失败了&#xff0c;报错信息如下所示 解决方法…

基于jeecgboot-vue3的Flowable流程-自定义业务表单流程历史信息显示

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、对于自定义业务表单的流程历史记录信息做了调整&#xff0c;增加显示自定义业务表单 <el-tab-pane label"表单信息" name"form"><div v-if"customF…

Fine-BI学习笔记

官方学习文档&#xff1a;快速入门指南- FineBI帮助文档 FineBI帮助文档 (fanruan.com) 1.零基础入门 1.1 功能简介 完成四个流程&#xff1a;新建分析主题、添加数据、分析数据、分享协作。 示例数据获取&#xff1a;5分钟上手FineBI - FineBI帮助文档 (fanruan.com) 1.2 …

Pyqt5新手教程

PyQt界面开发的两种方式&#xff1a;可视化UI 编程式UI &#xff08;1&#xff09;可视化UI&#xff1a;基于Qt Designer可视化编辑工具进行组件拖放、属性设置、布局管理等操作创建界面。 一是将其保存为.ui文件&#xff0c;然后在PyQt应用程序中加载和使用.ui文件。 二是使用…

mac OS matplotlib missing from font(s) DejaVu Sans

如果能搜索到这篇文章&#xff0c;我猜你遇到了和我一样的问题&#xff1a;matplotlib绘图中文乱码。如下&#xff1a; 出现这个问题的原因是&#xff1a;matplotlib使用的字体列表中默认没有中文字体。 这里说一种解决方案&#xff1a;我们可以在文件中手动指定matplotlib使用…

记一次Mycat分库分表实践

接了个活,又搞分库分表。 一、分库分表 在系统的研发过程中,随着数据量的不断增长,单库单表已无法满足数据的存储需求,此时就需要对数据库进行分库分表操作。 分库分表是随着业务的不断发展,单库单表无法承载整体的数据存储时,采取的一种将整体数据分散存储到不同服务…

bool数组的理解和应用[C++]

文章目录 bool数组的用法bool数组的定义声明bool数组的初始化访问和修改数组元素遍历数组 运用bool数组简单代码 在今天做题中发现了bool类不仅能用于函数类型还能用于数组类型&#xff0c;好奇查了查发现bool还有很多用处&#xff1a;基本变量&#xff0c;在枚举类型中会用到&…

Java二十三种设计模式-装饰器模式(7/23)

装饰器模式&#xff1a;动态扩展功能的灵活之选 引言 装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;用于在不修改对象自身的基础上&#xff0c;通过添加额外的职责来扩展对象的功能。 基础知识&#xff0c;java设计模式总体来说设计…

大语言模型-GPT2-Generative Pre-Training2

一、背景信息&#xff1a; GPT2是2019年由OpenAI 提出的预训练语言模型。 GPT2提出语言模型式无监督的多任务学习 。旨在通过无监督学习也能达到和finetune一样的效果&#xff0c;并且拥有更强的泛化能能力。 即提出利用语言模型做下游任务时&#xff0c;不需要下游任务的任何…

Python Flask入门到精通:详细教程和实战案例

前言 Flask是一个轻量级的Web框架&#xff0c;用于快速开发Web应用程序。它的设计理念是简洁、灵活和易于扩展&#xff0c;非常适合于从简单的单页应用到复杂的大型项目。通过Flask&#xff0c;可以创建各种Web应用程序&#xff0c;比如博客、电子商务网站、RESTful API等。 …

Unity3d打包到Android

本文参考&#xff1a; Unity3D新手教程&#xff1a;如何打包发布到Android_哔哩哔哩_bilibili 一、Unity 打包Android的环境搭建 1、工具安装 Unity Hub已经集成了Android的环境搭建。 选择Add modules 然后安装Android Build Support下的所有工具。 如果各个工具都安装成功…

H3CNE(路由基础、直连路由与静态路由)

目录 6.1 直连路由 6.2 静态路由理解性实验 6.2.1 配置直连路由 6.2.2 配置静态路由 6.3 路由表的参数与比较 6.3.1 优先级的比较 6.3.2 开销的比较 6.4 路由器中的等价路由、浮动路由、默认路由 6.4.1 等价路由 6.4.2 浮动路由 6.4.3 默认路由(缺省路由) 6.1 直连路…

银河麒麟服务器V10 SP3 安装人大金仓V009R001C001B0030

原文链接&#xff1a;银河麒麟服务器V10 SP3 安装人大金仓V009R001C001B0030 Hello&#xff0c;大家好啊&#xff0c;今天给大家带来一篇关于在银河麒麟服务器V10 SP3上安装人大金仓V009R001C001B0030的文章。人大金仓是国内知名的数据库管理系统&#xff0c;它在高性能、高可靠…

【MySQL进阶之路 | 高级篇】范式概述与第一范式

1. 范式简介 在关系型数据库中&#xff0c;关于数据表的设计的基本原则&#xff0c;规则就称为范式。可以理解为&#xff0c;一张数据表的设计结果需要满足的某种设计标准的级别。要想设计一个结构合理的关系型数据库&#xff0c;必须满足一定的范式。 范式的英文名是Normal …

C++树形结构(1 基础)

目录 一.基础&#xff1a; 1.概念&#xff1a; 2.定义&#xff1a; Ⅰ.树的相关基础术语&#xff1a; Ⅱ.树的层次&#xff1a; 3.树的性质&#xff1a; 二.存储思路&#xff1a; 1.结构体存储&#xff1a; 2.数组存储&#xff1a; 三.树的遍历模板&#xff1a; 四.信…

【SQL语句大全(MySQL)】

SQL语法 添加删除修改查询基本查询条件查询分组函数/聚合函数分组查询排序分页查询&#xff08;限制查询&#xff09;多表查询连接查询根据年代分类连接查询根据连接方式分类1、内连接2、左外连接3、右外连接 多张表连接的语法格式 嵌套查询 SQL语句书写顺序 添加 INSERT INTO…

深入浅出WebRTC—ULPFEC

FEC 通过在发送端添加额外的冗余信息&#xff0c;使接收端即使在部分数据包丢失的情况下也能恢复原始数据&#xff0c;从而减轻网络丢包的影响。在 WebRTC 中&#xff0c;FEC 主要有两种实现方式&#xff1a;ULPFEC 和 FlexFEC&#xff0c;FlexFEC 是 ULPFEC 的扩展和升级&…

贪心+背包

这道题比较坑的就是我们的对于相同截止时间的需要排个序&#xff0c;因为我们这个工作是有时间前后顺序的&#xff0c;我们如果不排序的话我们一些截止时间晚的工作就无法得到最优报酬 #include<bits/stdc.h> using namespace std;#define int long long int t; int n; c…