当前位置: 首页 > news >正文

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 参数会绕过正常的故障转移流程,可能会导致意外的后果
  • 建议自动处理故障转移,而不是手动干预

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

在这里插入图片描述

相关文章:

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

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 集群信息2.1 CLUSTER INFO 3. 节点管理3.1 CLUSTER MYID3.2 CLUSTER NODES3…...

将YOLOv8模型从PyTorch的.pt格式转换为TensorRT的.engine格式

TensorRT是由NVIDIA开发的一款高级软件开发套件(SDK)&#xff0c;专为高速深度学习推理而设计。它非常适合目标检测等实时应用。该工具包可针对NVIDIA GPU优化深度学习模型&#xff0c;从而实现更快、更高效的运行。TensorRT模型经过TensorRT优化&#xff0c;包括层融合(layer …...

Hello SLAM(在Linux中实现第一个C++程序)

首先需要安装vim编辑器&#xff0c;输入命令 sudo apt install vim 在Ubuntu上安装好vim编辑器后&#xff0c;创建路径&#xff08;/home/slambook/ch2&#xff09;&#xff0c;在该路径下创建一个cpp文档&#xff08;touch hello.c&#xff09;&#xff0c;通过vim编辑器进行…...

IPD推行成功的核心要素(十五)项目管理提升IPD相关项目交付效率和用户体验

研发项目往往包含很多复杂的流程和具体的细节。因此&#xff0c;一套完整且标准的研发项目管理制度和流程对项目的推进至关重要。研发项目管理是成功推动创新和技术发展的关键因素。然而在实际管理中&#xff0c;研发项目管理常常面临着需求不确定、技术风险、人员素质、成本和…...

C++ 鼠标轨迹API【神诺科技SDK】

一.鼠标轨迹模拟简介 传统的鼠标轨迹模拟依赖于简单的数学模型&#xff0c;如直线或曲线路径。然而&#xff0c;这种方法难以捕捉到人类操作的复杂性和多样性。AI大模型的出现&#xff0c;使得神诺科技 能够通过深度学习技术&#xff0c;学习并模拟更自然的鼠标移动行为。 二.…...

设计模式|观察者模式

观察者模式是一种行为设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。当主题对象发生变化时&#xff0c;它的所有观察者都会收到通知并更新。观察者模式常用于实现事件处理系统、发布-订阅模式等。在项目中&#xff0c…...

python自动化运维 通过paramiko库和time库实现服务器自动化管理

目录 一.前言 二. 代码实现以及解析 2.1导入必要的库 2.2定义服务器信息 2.3创建 SSH 客户端连接函数 2.4执行远程命令函数 2.5获取系统信息函数 2.6重启服务函数 2.7 主函数 三.致谢 一.前言 在数字化时代&#xff0c;IT 基础设施的规模和复杂性不断增长&am…...

HTML常用的转义字符——怎么在网页中写“<div></div>”?

一、问题描述 如果需要在网页中写“<div></div>”怎么办呢&#xff1f; 使用转义字符 如果直接写“<div></div>”&#xff0c;编译器会把它翻译为块&#xff0c;类似的&#xff0c;其他的标签也是如此&#xff0c;所以如果要在网页中写类似于“<div…...

shell-awk文本处理工具

1、awk概述 AWK 是一种处理文本文件的语言&#xff0c;是一个强大的文本分析工具。 它是专门为文本处理设计的编程语言&#xff0c;也是行处理软件&#xff0c;通常用于扫描、过滤、统计汇总工作 数据可以来自标准输入也可以是管道或文件 在 linux 上常用的是 gawk,awk …...

如何在测试中保护用户隐私!

在当今数据驱动的时代&#xff0c;用户隐私保护成为了企业和开发团队关注的焦点。在软件测试过程中&#xff0c;处理真实用户数据时保护隐私尤为重要。本文将介绍如何在测试中保护用户隐私&#xff0c;并提供具体的方案和实战演练。 用户隐私保护的重要性 用户隐私保护不仅是法…...

ARCGIS PRO DSK GraphicsLayer创建文本要素

一、判断GraphicsLayer层【地块注记】是否存在&#xff0c;如果不存在则新建、如果存在则删除所有要素 Dim GraphicsLayer pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault() 获取当前map对象中的GetLayer图层 Await Queue…...

看板项目之vue代码分析

目录&#xff1a; Q1、vue项目怎么实现的输入localhost&#xff1a;8080就能自动跳到index页面Q2、组合饼状图如何实现Q3、vue项目如何实现环境的切换Q4、vue怎么实现vue里面去调用js文件里面的函数 Q1、vue项目怎么实现的输入localhost&#xff1a;8080就能自动跳到index页面 …...

lua 游戏架构 之 游戏 AI (七)ai_dead

定义一个名为ai_dead的类&#xff0c;继承自ai_base类。这个类用于处理游戏中AI在死亡状态下的行为逻辑。以下是对代码的具体解释&#xff1a; 1. **引入基类**&#xff1a; - 使用require函数引入ai_base类&#xff0c;作为基础类。 2. **定义ai_dead类**&#xff1a; …...

前端开发知识(一)-html

1.前端开发需掌握的内容&#xff1a; 2.前端开发的三剑客&#xff1a;html、css、javascript Vue可以简化JavaScpript流程。 Element&#xff08;饿了么开发的&#xff09; &#xff1a;前端组件库。 Ngix&#xff1a;前端服务器。 3.前端开发工具&#xff1a;vscode 1)按…...

身份证如何查验真伪?C#身份证二要素、三要素接口集成

身份证不仅是我们的身份证明&#xff0c;更是社会生活中的“通行证”&#xff0c;现在人们的衣食住行都离不开身份证。但对于提供服务的平台而言&#xff0c;如何对用户提供的身份信息进行真伪核验便成为了一大难题。别担心&#xff0c;今天小编为服务平台带来了身份证二要素、…...

C++ | Leetcode C++题解之第290题单词规律

题目&#xff1a; 题解&#xff1a; class Solution { public:bool wordPattern(string pattern, string str) {unordered_map<string, char> str2ch;unordered_map<char, string> ch2str;int m str.length();int i 0;for (auto ch : pattern) {if (i > m) {…...

Pytorch使用教学7-张量的广播

PyTorch中的张量具有和NumPy相同的广播特性&#xff0c;允许不同形状的张量之间进行计算。 广播的实质特性&#xff0c;其实是低维向量映射到高维之后&#xff0c;相同位置再进行相加。我们重点要学会的就是低维向量如何向高维向量进行映射。 相同形状的张量计算 虽然我们觉…...

生成式AI:对话系统(Chat)与自主代理(Agent)的和谐共舞

生成式AI&#xff1a;对话与行动的和谐共舞 我们正站在一个令人激动的时代门槛上——生成式AI技术飞速发展&#xff0c;带来了无限的可能性。一个关键问题浮现&#xff1a;AI的未来是对话系统&#xff08;Chat&#xff09;的天下&#xff0c;还是自主代理&#xff08;Agent&am…...

唯众物联网(IOT)全功能综合实训教学解决方案

一、引言 在信息技术日新月异的今天&#xff0c;物联网&#xff08;IoT&#xff09;作为推动数字化转型的关键力量&#xff0c;其触角已延伸至我们生活的方方面面&#xff0c;深刻地重塑了工作模式、生活习惯乃至社会结构的每一个角落。面对这一前所未有的变革浪潮&#xff0c…...

24证券从业考试报名『个人信息表』填写模板❗

24证券从业考试报名『个人信息表』填写模板❗ 1️⃣居住城市、通讯地址&#xff1a;写自己现居住的地址就可以。 2️⃣学历&#xff1a;需要注意的是学历填写的是考生已经取得的学历&#xff0c;在校大学生已经不具有报名资格&#xff0c;选择大专以上&#xff0c;或者是高中学…...

深度学习系列70:模型部署torchserve

1. 流程说明 ts文件夹下&#xff0c; 从launcher.py进入&#xff0c;执行jar文件。 入口为model_server.py的start()函数。内容包含&#xff1a; 读取args&#xff0c;创建pid文件 找到java&#xff0c;启动model-server.jar程序&#xff0c;同时读取log-config文件&#xff…...

算法日记day 20(中序后序遍历序列构造二叉树|最大、合并、搜索二叉树)

一、中序后序序列构造二叉树 题目&#xff1a; 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,…...

【科研】# Taylor Francis 论文 LaTeX template模版 及 Word模版

【科研写论文】系列 文章目录 【科研写论文】系列前言一、Word 模板&#xff08;附下载网址&#xff09;&#xff1a;二、LaTeX 版本方法1&#xff1a;直接网页端打开&#xff08;附网址&#xff09;方法2&#xff1a;直接下载到本地电脑上编辑下载地址说明及注意事项 前言 给…...

Linux网络配置及常见命令!

vim /etc/sysconfig/network-scripsts/ifcfg-ens33&#xff08;图形界面配置网络&#xff09; Xshell rz:上传&#xff08;从Windows到Linux&#xff09; sz&#xff1a;下载&#xff1a;&#xff08;从Linux到Windows&#xff09;&#xff08;后接文件手工输入&#xff09;…...

linux之shell脚本实战

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…...

文件上传漏洞(ctfshow web151-161)

Web151 F12修改源代码 exts后面png改为php 这样就可以上传php的文件了 Web152&#xff1a; 考点&#xff1a;后端不能单一校验 就是要传图片格式&#xff0c;抓个包传个png的图片 然后bp抓包修改php后缀解析 然后放包 Web153-web156 在php代码中可以使用“{}”代替“[]” …...

小猪佩奇.js

闲着没事 使用js 画一个小猪佩奇把 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</tit…...

人工智能AI合集:Ollama部署对话语言大模型-网页访问

目录 &#x1f345;点击这里查看所有博文 随着人工智能技术的飞速发展&#xff0c;AI已经不再是遥不可及的高科技概念&#xff0c;而是逐渐融入到我们的日常生活中。从智能手机的语音助手到家庭中的智能音箱&#xff0c;再到工业自动化和医疗诊断&#xff0c;AI的应用无处不在…...

CentOS搭建Apache服务器

安装对应的软件包 [roothds ~]# yum install httpd mod_ssl -y 查看防火墙的状态和selinux [roothds ~]# systemctl status firewalld [roothds ~]# cat /etc/selinux/config 若未关闭&#xff0c;则关闭防火墙和selinux [roothds ~]# systemctl stop firewalld [roothds ~]# …...

CDGA|数据治理:安全如何贯穿数据供给、流通、使用全过程

随着信息技术的飞速发展&#xff0c;数据已经成为企业运营、社会管理和经济发展的核心要素。然而&#xff0c;数据在带来巨大价值的同时&#xff0c;也伴随着诸多安全风险。因此&#xff0c;数据治理的重要性日益凸显&#xff0c;它不仅仅是对数据的简单管理&#xff0c;更是确…...