Redis Cluster日常操作命令梳理

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

 

在之前的一篇文章已经介绍了Redis Cluster及其部署,下面说下Redis Cluster日常操作命令:

一、以下命令是Redis Cluster集群所独有的,执行下面命令需要先登录redis:
[root@manage redis]# redis-cli -c -p 6382 -h 192.168.10.12
192.168.10.12:6382>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 集群(cluster) 
CLUSTER INFO 打印集群的信息 
CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。  
   
// 节点(node) 
CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。 
CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。 
CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。 
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。  
   
// 槽(slot) 
CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。 
CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。 
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。 
CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。 
CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。 
CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。 
CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入( import )或者迁移(migrate)。  
   
// 键 (key) 
CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。 
CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。 
CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键。

二,添加节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
1)新配置二个测试节点
# cd /etc/redis 
 
// 新增配置 
# cp redis-6379.conf redis-6378.conf && sed -i "s/6379/6378/g" redis-6378.conf 
# cp redis-6382.conf redis-6385.conf && sed -i "s/6382/6385/g" redis-6385.conf 
   
// 启动 
# redis-server /etc/redis/redis-6385.conf > /var/log/redis/redis-6385.log 2>&1 & 
# redis-server /etc/redis/redis-6378.conf > /var/log/redis/redis-6378.log 2>&1 & 
 
2)添加主节点
# redis-trib.rb add-node 192.168.10.219:6378 192.168.10.219:6379 
注释:
192.168.10.219:6378是新增的节点
192.168.10.219:6379集群任一个旧节点
 
3)添加从节点
# redis-trib.rb add-node --slave --master-id 03ccad2ba5dd1e062464bc7590400441fafb63f2 192.168.10.220:6385 192.168.10.219:6379 
注释:
--slave,表示添加的是从节点
--master- id  03ccad2ba5dd1e062464bc7590400441fafb63f2,主节点的node  id ,在这里是前面新添加的6378的node  id
192.168.10.220:6385,新节点
192.168.10.219:6379集群任一个旧节点
 
4)重新分配slot
# redis-trib.rb reshard 192.168.10.219:6378               //下面是主要过程 
How many slots  do  you want to move (from 1 to 16384)? 1000  // 设置slot数1000 
What is the receiving node ID? 03ccad2ba5dd1e062464bc7590400441fafb63f2  // 新节点node  id 
Please enter all the  source  node IDs. 
  Type  'all'  to use all the nodes as  source  nodes  for  the  hash  slots. 
  Type  'done'  once you entered all the  source  nodes IDs. 
Source node  #1:all                                      //表示全部节点重新洗牌 
Do you want to proceed with the proposed reshard plan ( yes /no )?  yes  // 确认重新分 
 
新增加的主节点,是没有slots的,
M: 03ccad2ba5dd1e062464bc7590400441fafb63f2 192.168.10.219:6378
slots:0-332,5461-5794,10923-11255 (0 slots) master
主节点如果没有slots的话,存取数据就都不会被选中。
可以把分配的过程理解成打扑克牌,all表示大家重新洗牌;输入某个主节点的node  id ,然后在输入 done 的话,就好比从某个节点,抽牌。
 
5)查看一下,集群情况
[root@slave2 redis] # redis-trib.rb check 192.168.10.219:6379 
Connecting to node 192.168.10.219:6379: OK 
Connecting to node 192.168.10.220:6385: OK 
Connecting to node 192.168.10.219:6378: OK 
Connecting to node 192.168.10.220:6382: OK 
Connecting to node 192.168.10.220:6383: OK 
Connecting to node 192.168.10.219:6380: OK 
Connecting to node 192.168.10.219:6381: OK 
Connecting to node 192.168.10.220:6384: OK 
>>> Performing Cluster Check (using node 192.168.10.219:6379) 
M: 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052 192.168.10.219:6379 
  slots:5795-10922 (5128 slots) master 
  1 additional replica(s) 
S: 9c240333476469e8e2c8e80b089c48f389827265 192.168.10.220:6385 
  slots: (0 slots) slave 
  replicates 03ccad2ba5dd1e062464bc7590400441fafb63f2 
M: 03ccad2ba5dd1e062464bc7590400441fafb63f2 192.168.10.219:6378 
  slots:0-332,5461-5794,10923-11255 (1000 slots) master 
  1 additional replica(s) 
M: 19b042c17d2918fade18a4ad2efc75aa81fd2422 192.168.10.220:6382 
  slots:333-5460 (5128 slots) master 
  1 additional replica(s) 
M: b2c50113db7bd685e316a16b423c9b8abc3ba0b7 192.168.10.220:6383 
  slots:11256-16383 (5128 slots) master 
  1 additional replica(s) 
S: 6475e4c8b5e0c0ea27547ff7695d05e9af0c5ccb 192.168.10.219:6380 
  slots: (0 slots) slave 
  replicates 19b042c17d2918fade18a4ad2efc75aa81fd2422 
S: 1ee01fe95bcfb688a50825d54248eea1e6133cdc 192.168.10.219:6381 
  slots: (0 slots) slave 
  replicates b2c50113db7bd685e316a16b423c9b8abc3ba0b7 
S: 9a2a1d75b8eb47e05eee1198f81a9edd88db5aa1 192.168.10.220:6384 
  slots: (0 slots) slave 
  replicates 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052 
[OK] All nodes agree about slots configuration. 
>>> Check  for  open  slots... 
>>> Check slots coverage... 
[OK] All 16384 slots covered.

三、改变从节点的master

1
2
3
4
5
6
7
8
9
10
11
// 查看一下6378的从节点 
# redis-cli -p 6378 cluster nodes | grep slave | grep 03ccad2ba5dd1e062464bc7590400441fafb63f2 
   
// 将6385加入到新的master 
# redis-cli -c -p 6385 -h 192.168.10.220 
192.168.10.220:6385> cluster replicate 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052   // 新master的node  id 
OK 
192.168.10.220:6385> quit 
   
// 查看新master的slave 
# redis-cli -p 6379 cluster nodes | grep slave | grep 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052

四、删除节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1)删除从节点
# redis-trib.rb del-node 192.168.10.220:6385 '9c240333476469e8e2c8e80b089c48f389827265' 
 
2)删除主节点
如果主节点有从节点,将从节点转移到其他主节点
如果主节点有slot,去掉分配的slot,然后在删除主节点
# redis-trib.rb reshard 192.168.10.219:6378                             //取消分配的slot,下面是主要过程 
How many slots  do  you want to move (from 1 to 16384)? 1000               // 被删除master的所有slot数量 
What is the receiving node ID? 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052  // 接收6378节点slot的master 
Please enter all the  source  node IDs. 
  Type  'all'  to use all the nodes as  source  nodes  for  the  hash  slots. 
  Type  'done'  once you entered all the  source  nodes IDs. 
Source node  #1:03ccad2ba5dd1e062464bc7590400441fafb63f2                //被删除master的node-id 
Source node  #2:done  
   
Do you want to proceed with the proposed reshard plan ( yes /no )?  yes     // 取消slot后,reshard 
 
 
新增master节点后,也进行了这一步操作,当时是分配,现在去掉。反着的。
# redis-trib.rb del-node 192.168.10.219:6378 '03ccad2ba5dd1e062464bc7590400441fafb63f2' 
 
新的master节点被删除了,这样就回到了,就是这篇文章开头,还没有添加节点的状态

五、Redis缓存清理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1)登陆redis
# src/redis-cli -c -h 192.168.1.100 -p 6379
 
2)执行:
192.168.1.100:6379> dbsize
 
3)
192.168.1.100:6379> flushall
 
================================================================
redis集群指定key值得缓存清理:
1)登录至指定端口的redis服务器
# src/redis-cli -c -h 192.168.1.100 -p 6379
 
2)查看所有key值
keys *
 
3)删除指定索引的值
del key
***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************

本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/7910692.html,如需转载请自行联系原作者
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
7小时前
|
NoSQL Redis 数据库
10- 你们用过Redis的事务吗 ? 事务的命令有哪些 ?
```markdown Redis事务包括MULTI、EXEC、DISCARD、WATCH四个命令。虽具备事务功能,但在实际开发中使用较少。 ```
43 7
|
8小时前
|
NoSQL Redis 数据库
Redis的全局命令及相关误区
Redis的全局命令及相关误区
24 0
|
8小时前
|
存储 NoSQL Redis
Redis基础命令集详解
Redis基础命令集详解
14 1
|
7小时前
|
存储 NoSQL Redis
Redis 常用命令
Redis 常用命令
15 0
|
7小时前
|
存储 NoSQL Redis
深入浅出Redis(零):Redis常用命令的使用
深入浅出Redis(零):Redis常用命令的使用
|
8小时前
|
存储 NoSQL 关系型数据库
深入浅出Redis(十二):Redis的排序命令Sort
深入浅出Redis(十二):Redis的排序命令Sort
|
7小时前
|
NoSQL Linux Redis
Redis的介绍,以及Redis的安装(本机windows版,虚拟机Linux版)和Redis常用命令的介绍
Redis的介绍,以及Redis的安装(本机windows版,虚拟机Linux版)和Redis常用命令的介绍
23 0
|
7小时前
|
存储 NoSQL 定位技术
Redis常用数据类型及常用命令
这些是Redis中常用的数据类型和命令。Redis还提供了许多其他命令和功能,用于数据存储、操作和查询。你可以根据需要选择适当的数据类型和命令来满足你的应用程序需求。
23 4
|
7小时前
|
存储 NoSQL Java
Redis入门到通关之ZSet命令
Redis入门到通关之ZSet命令
18 0
|
7小时前
|
存储 缓存 NoSQL
Redis入门到通关之Set命令
Redis入门到通关之Set命令
22 0