Note/Redis 集群命令.md

8.1 KiB
Raw Blame History

Redis 集群命令

节点管理命令

  1. 获取集群信息

cluster info
  1. 列出集群中所有节点的信息

cluster nodes
  1. 将一个新节点加入集群中

cluster meet <ip> <port>
  1. 从集群中移除一个节点

cluster forget <node-id>
  1. 将一个节点设置为另一个节点的从节点

cluster replicate <master-node-id>
  1. 在主从之间切换角色

cluster failover
  1. 重置集群节点的状态

cluster reset hard

插槽管理命令

  1. 向集群添加插槽

cluster addslots 1 2 3
  1. 从集群中删除插槽。

cluster delslots 1 2 3
  1. 设置插槽的状态。

cluster setslot 1 node node-id
cluster setslot 1 migrating node-id
cluster setslot 1 importing node-id

查看插槽信息

cluster slots

其他命令

  1. 计算给定键的插槽。

cluster keyslot mykey
  1. 获取对某个节点的失败报告数。

cluster count-failure-reports <node-id>
  1. 计算某个插槽中的键数量。

cluster countkeysinslot 1
  1. 获取某个插槽中的键。

cluster getkeysinslot 1 10
  1. 强制集群保存配置。

cluster saveconfig
  1. 列出某个主节点的从节点。

cluster slaves master-node-id

集群命令

1.创建集群

redis-cli --cluster create <host1>:<port1> ... <hostN>:<portN> --cluster-replicas <arg>

参数:

  • host1:port1 ... hostN:portN: 指定集群中的各个节点。
  • --cluster-replicas <arg>: 设置每个主节点的副本数。

举例:

假设有三个Redis实例分别运行在端口7000、7001和7002创建一个包含三个节点的Redis集群每个主节点有一个副本。

redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 --cluster-replicas 1

2.检查集群

redis-cli --cluster check <host>:<port> --cluster-search-multiple-owners

参数:

  • host:port: 集群中任意一个节点的地址。
  • --cluster-search-multiple-owners: 搜索有多个拥有者的槽(可选)。

举例:

检查集群的健康状态使用节点127.0.0.1:7000作为入口。

redis-cli --cluster check 127.0.0.1:7000

3.获取集群信息

redis-cli --cluster info <host>:<port>

参数:

  • host:port: 集群中任意一个节点的地址。

举例:

获取集群的信息使用节点127.0.0.1:7000作为入口。

redis-cli --cluster info 127.0.0.1:7000

4.修复集群

redis-cli --cluster fix <host>:<port> --cluster-search-multiple-owners --cluster-fix-with-unreachable-masters

参数:

  • host:port: 集群中任意一个节点的地址。
  • --cluster-search-multiple-owners: 搜索有多个拥有者的槽(可选)。
  • --cluster-fix-with-unreachable-masters: 处理无法访问的主节点(可选)。

举例:

修复集群中可能存在的问题使用节点127.0.0.1:7000作为入口。例如重新分配槽等。

redis-cli --cluster fix 127.0.0.1:7000

5.重新分片

redis-cli --cluster reshard <host>:<port> --cluster-from <arg> --cluster-to <arg> --cluster-slots <arg> --cluster-yes --cluster-timeout <arg> --cluster-pipeline <arg> --cluster-replace

参数:

  • host:port: 集群中任意一个节点的地址。
  • --cluster-from <arg>: 指定源节点IP。
  • --cluster-to <arg>: 指定目标节点IP。
  • --cluster-slots <arg>: 指定需要迁移的槽数。
  • --cluster-yes: 自动确认操作。
  • --cluster-timeout <arg>: 设置操作超时时间。
  • --cluster-pipeline <arg>: 设置管道数量。
  • --cluster-replace: 替换现有的槽分配。

举例:

将槽从节点127.0.0.1:7000移动到节点127.0.0.1:7001。

redis-cli --cluster reshard 127.0.0.1:7000 --cluster-from 17e7723239cbc85133bc5f89f24cc0e600bb9eb0 --cluster-to a8ee09617d7c526c9870f5d34b09c52e23f4b9f1 --cluster-slots 5 --cluster-yes

6.重新平衡

redis-cli --cluster rebalance <host>:<port> --cluster-weight <node1=w1...nodeN=wN> --cluster-use-empty-masters --cluster-timeout <arg> --cluster-simulate --cluster-pipeline <arg> --cluster-threshold <arg> --cluster-replace

参数:

  • host:port: 集群中任意一个节点的地址。
  • --cluster-weight <node1=w1...nodeN=wN>: 指定节点权重。
  • --cluster-use-empty-masters: 使用空的主节点。
  • --cluster-timeout <arg>: 设置操作超时时间。
  • --cluster-simulate: 模拟操作。
  • --cluster-pipeline <arg>: 设置管道数量。
  • --cluster-threshold <arg>: 设置平衡阈值。
  • --cluster-replace: 替换现有的槽分配。

举例:

重新平衡集群中节点的数据分布使用节点127.0.0.1:7000作为入口。

redis-cli --cluster rebalance 127.0.0.1:7000

7.添加节点

redis-cli --cluster add-node <new_host>:<new_port> <existing_host>:<existing_port> --cluster-slave --cluster-master-id <arg>

参数:

  • new_host:new_port: 新节点的地址。
  • existing_host:existing_port: 集群中任意一个节点的地址。
  • --cluster-slave: 将新节点添加为从节点。
  • --cluster-master-id <arg>: 指定主节点ID在从节点模式下使用

举例:

将新节点127.0.0.1:7003添加到现有集群中并使其成为从节点。

redis-cli --cluster add-node 127.0.0.1:7003 127.0.0.1:7000 --cluster-slave

8.删除节点

redis-cli --cluster del-node <host>:<port> <node_id>

参数:

  • host:port: 集群中任意一个节点的地址。
  • node_id: 要删除的节点ID。

举例:

从集群中删除节点127.0.0.1:7003。从集群中删除指定节点其中<node_id>是要删除的节点ID可以通过redis-cli --cluster info 127.0.0.1:7000命令获取。

redis-cli --cluster del-node 127.0.0.1:7000 <node_id>

9.发送命令

redis-cli --cluster call <host>:<port> command arg arg .. arg --cluster-only-masters --cluster-only-replicas

参数:

  • host:port: 集群中任意一个节点的地址。
  • command arg arg .. arg: 要发送的命令及其参数。
  • --cluster-only-masters: 仅向主节点发送命令。
  • --cluster-only-replicas: 仅向从节点发送命令。

举例:

向集群中所有主节点发送FLUSHALL命令,清除所有数据。

redis-cli --cluster call 127.0.0.1:7000 FLUSHALL --cluster-only-masters

10.设置超时时间

redis-cli --cluster set-timeout <host>:<port> <milliseconds>

参数:

  • host:port: 集群中任意一个节点的地址。
  • milliseconds: 超时时间(毫秒)。

举例:

设置节点127.0.0.1:7000的超时时间为2000毫秒。

redis-cli --cluster set-timeout 127.0.0.1:7000 2000

11.导入数据

redis-cli --cluster import <host>:<port> --cluster-from <arg> --cluster-from-user <arg> --cluster-from-pass <arg> --cluster-from-askpass --cluster-copy --cluster-replace

参数:

  • host:port: 集群中任意一个节点的地址。
  • --cluster-from <arg>: 源Redis实例地址。
  • --cluster-from-user <arg>: 源Redis实例用户名。
  • --cluster-from-pass <arg>: 源Redis实例密码。
  • --cluster-from-askpass: 从输入中获取密码。
  • --cluster-copy: 复制数据而不是移动数据。
  • --cluster-replace: 替换现有的数据。

举例:

将数据从非集群Redis实例127.0.0.1:6379导入到集群中。

redis-cli --cluster import 127.0.0.1:7000 --cluster-from 127.0.0.1:6379 --cluster-copy

12.备份

redis-cli --cluster backup <host>:<port> <backup_directory>

参数:

  • host:port: 集群中任意一个节点的地址。
  • backup_directory: 备份文件保存的目录。

举例:

备份节点127.0.0.1:7000的数据到目录/backup.

redis-cli --cluster backup 127.0.0.1:7000 /backup

13. 显示帮助信息

redis-cli --cluster help

解释:

  • 显示所有集群管理命令的帮助信息。