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

一、以下命令是Redis Cluster集群所独有的,执行下面命令需要先登录redis:
[root@manage redis]# redis-cli -c -p 6382 -h 192.168.10.12     (客户端命令:redis-cli -c -p port -h ip)
192.168.10.12:6382>  登录redis后,在里面可以进行下面命令操作

集群
cluster info :打印集群的信息
cluster nodes :列出集群当前已知的所有节点( node),以及这些节点的相关信息。
节点
cluster meet <ip> <port> :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
cluster forget <node_id> :从集群中移除 node_id 指定的节点。
cluster replicate <master_node_id> :将当前从节点设置为 node_id 指定的master节点的slave节点。只能针对slave节点操作。
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)。

cluster keyslot <key> :计算键 key 应该被放置在哪个槽上。
cluster countkeysinslot <slot> :返回槽 slot 目前包含的键值对数量。
cluster getkeysinslot <slot> <count> :返回 count 个 slot 槽中的键 。

二、集群中Master的下线及恢复
1)Master下线后,其对应的Slaver节点会自动变为Master节点,如下截图:

2)原来的Master重启后变成Slaver节点,并是原来Master节点的Slaver节点

三,添加节点

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.  

三、手动改变slave从节点所属的master主节点(一个slave只能属于一个master,而一个master可以有多个slave)

//查看一下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)删除从节点
# 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集群中通过"cluster replicate <master_node_id> "命令可以将一个slave节点重新配置为另外一个master的slave。
注意:这个只是针对slave节点,即登录到slave节点的reids中,执行这个命令。比如172.16.60.204:7003是172.16.60.202:7000主节点的slave节点,也可以把他设置成172.16.60.205:7004主节点的slave节点。
172.16.60.205:7004主节点的ID是48cbab906141dd26241ccdbc38bee406586a8d03则操作为
[root@redis-new01 ~]# /data/redis-4.0.6/src/redis-cli -h 172.16.60.204 -c -p 7003
172.16.60.204:7003> cluster replicate 48cbab906141dd26241ccdbc38bee406586a8d03
OK
172.16.60.204:7003>这样172.16.60.204:7003节点就变成了172.16.60.205:7004主节点的slave节点,而不再是172.16.60.202:7000主节点的slave节点!这样可以自动的将一个复制节点从一个master下移动到另外一个master下。 这种情况下的复制节点的自动重配置被称为复制迁移。
复制迁移可以提升系统的可靠性和抗灾性。在某种情况下,你想让集群的复制节点从一个master迁移到另一个master的原因可能是:
集群的抗崩溃能力总是跟集群中master 拥有的平均slave数量成正比。
比如,如果一个集群中每个master只有一个slave,当master和slave都挂掉的时候这个集群就崩溃了。因为此时有一些哈希槽无法找到了。
虽然网络分裂会把一堆节点从集群中孤立出来(这样你一下就会知道集群出问题了),但是其他的更常见的硬件或者软件的问题并不会在多台机器上同时发生,
所以很 可能在你的这个集群(平均每个master只有一个slave)有一个slave在早上4点挂掉,然后他的master在随后的早上6点挂掉。这样依然会 导致集群崩溃。可以通过给每个master都再多加一个slave节点来改进系统的可靠性,但是这样很昂贵。复制迁移允许只给某些master增加slave。比方说你的集群有20个节点,
10个master,每个master都有1个slave。然后你增加3个 slave到集群中并把他们分配给某几个master节点,这样某些master就会拥有多于1个slave。当某个 master失去了slave的时候,复制迁移可以将slave节点从拥有富余slave的master旗下迁移给没有slave的master。所以当 你的slave在早上4点挂掉的时候,
另一个slave会被迁移过来取代它的位置,这样当master节点在早上5点挂掉的时候,依然有一个slave可 以被选举为master,集群依然可以正常运行。所以简而言之,关于复制迁移应该注意下面几个方面:
-  集群在迁移的时候会尝试去迁移拥有最多slave数量的master旗下的slave。
-  想利用复制迁移特性来增加系统的可用性,你只需要增加一些slave节点给单个master(哪个master节点并不重要)。
-  复制迁移是由配置项cluster-migration-barrier控制的

六、升级节点

升级从服务器节点很简单,因为你只需要停止节点然后用已更新的Redis版本重启。如果有客户端使用从服务器节点分离读请求,它们应该能够在某个节点
不可用时重新连接另一个从服务器。升级主服务器要稍微复杂一些,建议的步骤是:
1)使用cluster failover来触发一次手工故障转移主服务器(请看本文档的手工故障转移小节)。
2)等待主服务器变为从服务器。
3)像升级从服务器那样升级这个节点。
4)如果你想让你刚刚升级的节点成为主服务器,触发一次新的手工故障转移,让升级的节点重新变回主服务器。可以按照这些步骤来一个节点一个节点的升级,直到全部节点升级完毕。

目前redis cluster集群的启动只能空节点启动,当节点有数据时会有err警告,但是只要进行fix就好了 redis-trib.rb fix 用这个命令修复下就OK了。

七、Redis缓存清理

1)登陆redis
# src/redis-cli -c -h 192.168.1.100 -p 63792)执行:
192.168.1.100:6379> dbsize3)
192.168.1.100:6379> flushall================================================================
redis集群指定key值得缓存清理:
1)登录至指定端口的redis服务器
# src/redis-cli -c -h 192.168.1.100 -p 63792)查看所有key值 (或者使用info命令也能查看出来)
keys *3)删除指定索引的值
del key

转载于:https://www.cnblogs.com/kevingrace/p/7910692.html

Redis Cluster日常操作命令梳理相关推荐

  1. Redis cluster日常管理【二】

    前面在Redis集群架构搭建详解博文中搭建了一个redis集群,这篇博文就是在那个redis集群基础上进行操作的. 一.添加新节点 在10.220.5.172上在新配置两个实例 ①新增配置 # cd ...

  2. Redis cluster日常管理【一】

    一.管理操作 集群 cluster info:打印集群的信息 cluster nodes:列出集群当前已知的所有节点,以及节点的相关信息 cluster meet<ip><port& ...

  3. 深入理解Redis Cluster和Jedis Cluster

    本文转载自:https://zhuanlan.zhihu.com/p/69800024 Redis Cluster是Redis官方提供的集群解决方案.由于业务的飞速增长,单机模式总会遇到内存.性能等各 ...

  4. 全面剖析Redis Cluster原理和应用 (good)

    redis redis cluster注意的问题 : 1.'cluster-require-full-coverage'参数的设置.该参数是redis配置文件中cluster模式的一个参数,从字面上基 ...

  5. Redis cluster原理

    前言 上文我们聊了基于Sentinel的Redis高可用架构,了解了Redis基于读写分离的主从架构,同时也知道当Redis的master发生故障之后,Sentinel集群是如何执行failover的 ...

  6. Redis Cluster集群知识学习总结

    Redis集群解决方案有两个: 1)  Twemproxy: 这是Twitter推出的解决方案,简单的说就是上层加个代理负责分发,属于client端集群方案,目前很多应用者都在采用的解决方案.Twem ...

  7. redis cluster以及master-slave在windows下环境搭建

    一.redis cluster环境搭建: 1.了解Redis Cluster原理: 详细了解可参考:http://doc.redisfans.com/topic/cluster-tutorial.ht ...

  8. redis cluster 集群 HA 原理和实操(史上最全、面试必备)

    文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 经典图书:<Java高并发核心编程(卷1)> 面试必备 ...

  9. Redis学习(二)之 Redis Cluster集群

    redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并 ...

最新文章

  1. STM32 基础系列教程 18 – IWDG
  2. 【腾许Bugly干货分享】“HTTPS”安全在哪里?
  3. WebBrowser控件禁用超链接转向、脚本错误提示、默认右键菜单和快捷键
  4. osi参考模型(开放系统互连参考模型)
  5. 【翻译】WPF 中附加行为的介绍 Introduction to Attached Behaviors in WPF
  6. 判断条件要仔细推敲(记洛谷P1317题WA的经历,Java语言描述)
  7. c 怎么配置oracle,cjdbc入门配置oracle
  8. 速成pytorch学习——11天. 使用GPU训练模型
  9. java xml 字符串转对象_java读取xml文件并转换成对象,并进行修改
  10. Python批处理文件
  11. python网课培训班学费一般多少
  12. 计算机C盘空间减少,为何我的C盘空间突然减少好几个G?
  13. 前后端分离框架Vue+Element UI(上集)
  14. HTML——表格合并
  15. 微信学习:我的学习测试环境(刚看我的DZd动力空间后台,发现推荐后双方有30软妹币福利,双赢哦)
  16. 智慧多功能综合杆案例分享:上海市多杆合一、综合杆道路智慧路灯项目解决方案解析
  17. 如何有效提升技术[成为大Niu]的两个方法
  18. 计算机思维在化工方面的应用,计算思维在化学上的应用.pdf
  19. 全网最全资源需要的看过来---分享是一种情怀
  20. 数字孪生技术在工业制造领域的研究与实践

热门文章

  1. 【luogu P3378 堆】 模板
  2. Hadoop -- ES -- CURD
  3. 第二章作业-第3题-万世想
  4. ubuntu 安装lamp
  5. sql从某不连续的数字中将其分段并找出缺失的数字并分段
  6. Swift编程语言学习2.1——基础运营商(在)
  7. 神奇的JavaScript之正则
  8. linux可以装在硬盘吗,在硬盘上安装Linux系统
  9. pro缺点和不足 一加7t_2021年元旦有哪些一加手机值得购买?
  10. android 实现显示电量,Android开发:显示电池电量