Note/Redis 集群命令.md

375 lines
8.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Redis 集群命令
## 节点管理命令
1. ### 获取集群信息
```shell
cluster info
```
2. ### 列出集群中所有节点的信息
```shell
cluster nodes
```
3. ### 将一个新节点加入集群中
```shell
cluster meet <ip> <port>
```
4. ### 从集群中移除一个节点
```shell
cluster forget <node-id>
```
5. ### 将一个节点设置为另一个节点的从节点
```shell
cluster replicate <master-node-id>
```
6. ### 在主从之间切换角色
```shell
cluster failover
```
7. ### 重置集群节点的状态
```shell
cluster reset hard
```
## 插槽管理命令
1. ### 向集群添加插槽
```shell
cluster addslots 1 2 3
```
2. ### 从集群中删除插槽。
```shell
cluster delslots 1 2 3
```
3. ### 设置插槽的状态。
```shell
cluster setslot 1 node node-id
cluster setslot 1 migrating node-id
cluster setslot 1 importing node-id
```
4.
### 查看插槽信息
```
cluster slots
```
## 其他命令
1. ### 计算给定键的插槽。
```shell
cluster keyslot mykey
```
2. ### 获取对某个节点的失败报告数。
```shell
cluster count-failure-reports <node-id>
```
3. ### 计算某个插槽中的键数量。
```shell
cluster countkeysinslot 1
```
4. ### 获取某个插槽中的键。
```shell
cluster getkeysinslot 1 10
```
5. ### 强制集群保存配置。
```shell
cluster saveconfig
```
6. ### 列出某个主节点的从节点。
```shell
cluster slaves master-node-id
```
## 集群命令
### 1.创建集群
```shell
redis-cli --cluster create <host1>:<port1> ... <hostN>:<portN> --cluster-replicas <arg>
```
**参数**:
- `host1:port1 ... hostN:portN`: 指定集群中的各个节点。
- `--cluster-replicas <arg>`: 设置每个主节点的副本数。
**举例**:
假设有三个Redis实例分别运行在端口7000、7001和7002创建一个包含三个节点的Redis集群每个主节点有一个副本。
```shell
redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 --cluster-replicas 1
```
### 2.检查集群
```shell
redis-cli --cluster check <host>:<port> --cluster-search-multiple-owners
```
**参数**:
- `host:port`: 集群中任意一个节点的地址。
- `--cluster-search-multiple-owners`: 搜索有多个拥有者的槽(可选)。
**举例**:
检查集群的健康状态使用节点127.0.0.1:7000作为入口。
```shell
redis-cli --cluster check 127.0.0.1:7000
```
### 3.获取集群信息
```shell
redis-cli --cluster info <host>:<port>
```
**参数**:
- `host:port`: 集群中任意一个节点的地址。
**举例**:
获取集群的信息使用节点127.0.0.1:7000作为入口。
```shell
redis-cli --cluster info 127.0.0.1:7000
```
### 4.修复集群
```shell
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作为入口。例如重新分配槽等。
```shell
redis-cli --cluster fix 127.0.0.1:7000
```
### 5.重新分片
```shell
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>`: 指定源节点。
- `--cluster-to <arg>`: 指定目标节点。
- `--cluster-slots <arg>`: 指定需要迁移的槽数。
- `--cluster-yes`: 自动确认操作。
- `--cluster-timeout <arg>`: 设置操作超时时间。
- `--cluster-pipeline <arg>`: 设置管道数量。
- `--cluster-replace`: 替换现有的槽分配。
**举例**:
将槽从节点127.0.0.1:7000移动到节点127.0.0.1:7001。
```shell
redis-cli --cluster reshard 127.0.0.1:7000 --cluster-from 127.0.0.1:7000 --cluster-to 127.0.0.1:7001 --cluster-slots 5 --cluster-yes
```
### 6.重新平衡
```shell
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作为入口。
```shell
redis-cli --cluster rebalance 127.0.0.1:7000
```
### 7.添加节点
```shell
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添加到现有集群中并使其成为从节点。
```shell
redis-cli --cluster add-node 127.0.0.1:7003 127.0.0.1:7000 --cluster-slave
```
### 8.删除节点
```shell
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`命令获取。
```shell
redis-cli --cluster del-node 127.0.0.1:7000 <node_id>
```
### 9.发送命令
```shell
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`命令,清除所有数据。
```shell
redis-cli --cluster call 127.0.0.1:7000 FLUSHALL --cluster-only-masters
```
### 10.设置超时时间
```shell
redis-cli --cluster set-timeout <host>:<port> <milliseconds>
```
**参数**:
- `host:port`: 集群中任意一个节点的地址。
- `milliseconds`: 超时时间(毫秒)。
**举例**:
设置节点127.0.0.1:7000的超时时间为2000毫秒。
```shell
redis-cli --cluster set-timeout 127.0.0.1:7000 2000
```
### 11.导入数据
```shell
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导入到集群中。
```shell
redis-cli --cluster import 127.0.0.1:7000 --cluster-from 127.0.0.1:6379 --cluster-copy
```
### 12.备份
```shell
redis-cli --cluster backup <host>:<port> <backup_directory>
```
**参数**:
- `host:port`: 集群中任意一个节点的地址。
- `backup_directory`: 备份文件保存的目录。
**举例**:
备份节点127.0.0.1:7000的数据到目录/backup.
```shell
redis-cli --cluster backup 127.0.0.1:7000 /backup
```
### 13. 显示帮助信息
```shell
redis-cli --cluster help
```
**解释**:
- 显示所有集群管理命令的帮助信息。