2. Redis 3.0.5 集群的命令、使用、维护

前言

上一篇中,对redis cluster的有了较为深入的实践,并且一整套都实践了,redis cluster 确实挺好用,随着版本的更新,它会越来越成熟和稳定,一定是未来的方向。

这一篇对后续的一些尾巴来学习下,包括 CLUSTER * 一系列命令,以及容灾性的数据迁移,以及在php的使用。

cluster命令

redis 有很多命令,同意,加入到cluster后,也有一些列的命令,现在一一来看下 (http://redis.io/commands/cluster-addslots):

  • CLUSTER INFO 打印集群的信息
  • CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
    //节点
  • CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
  • CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。
  • CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。
  • CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。
  • 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 槽中的键。
    //新增
  • CLUSTER SLAVES node-id 返回一个master节点的slaves 列表

我们来一个一个的实践一下。

我按照上一篇的理论实践知识的基础上,再次搭建了一个集群,这次运行了8个端口,用实际的ip代替127.0.0.1:

redis-trib.rb create --replicas 1 192.168.33.13:7000 192.168.33.13:7001 192.168.33.13:7002 192.168.33.13:7003 192.168.33.13:7004 192.168.33.13:7005 192.168.33.13:7006 192.168.33.13:7007 192.168.33.13:7008

这个命令过后,就会创建一个redis cluster 集群,包括4个Master5个slave。OK,现在我们来一一试一下上述的CLUSTER *命令。

cluster info

这个命令是显示当前连接的集群的各种信息。

[root@web3 7008]# redis-cli -c -p 7000
127.0.0.1:7000> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384 
cluster_slots_pfail:0 
cluster_slots_fail:0
cluster_known_nodes:9
cluster_size:4
cluster_current_epoch:9
cluster_my_epoch:1
cluster_stats_messages_sent:41417
cluster_stats_messages_received:41417
  • cluster_state:集群的状态。ok表示集群是成功的,如果至少有一个solt坏了,就将处于error状态。
  • cluster_slots_assigned:有多少槽点被分配了,如果是16384,表示全部槽点已被分配。
  • cluster_slots_ok:多少槽点状态是OK的, 16384 表示都是好的。
  • cluster_slots_pfail:多少槽点处于暂时疑似下线[PFAIL]状态,这些槽点疑似出现故障,但并不表示是有问题,也会继续提供服务。
  • cluster_slots_fail:多少槽点处于暂时下线[FAIL]状态,这些槽点已经出现故障,下线了。等待修复解决。
  • cluster_known_nodes:已知节点的集群中的总数,包括在节点 握手的状态可能不是目前该集群的成员。这里总公有9个。
  • cluster_size:(The number of master nodes serving at least one hash slot in the cluster) 简单说就是集群中主节点[Master]的数量。
  • cluster_current_epoch:本地当前时期变量。这是使用,以创造独特的不断增加的版本号过程中失败接管。{不懂}
  • cluster_my_epoch:这是分配给该节点的当前配置版本。{不懂}
    cluster_stats_messages_sent:通过群集节点到节点的二进制总线发送的消息数。
    cluster_stats_messages_received:通过群集节点到节点的二进制总线上接收报文的数量。

cluster nodes

获取集群上的所有的节点信息。一般这个命令用的比较多。

127.0.0.1:7008> cluster nodes

8916fb224bbae3dc0291ca47e066dca0a62fba19 192.168.33.13:7004 slave 3d2b7dccfc45ae2eb7aeb9e0bf001b0ac8f7b3da 0 1446115185933 5 connected
404cf1ecf54d4df46d5faaec4103cfdf67888ad2 192.168.33.13:7001 master - 0 1446115184929 2 connected 4096-8191
a035546046a607487436cf354c187b1712edf39b 192.168.33.13:7006 slave 6f5cd78ee644c1df9756fc11b3595403f51216cc 0 1446115184929 7 connected
6f5cd78ee644c1df9756fc11b3595403f51216cc 192.168.33.13:7002 master - 0 1446115185432 3 connected 8192-12287
f325d80e770ce319e4490818a49bad033cce942c 192.168.33.13:7008 myself,slave 3d2b7dccfc45ae2eb7aeb9e0bf001b0ac8f7b3da 0 0 9 connected
e357bea5151b32a971c1f7a5788271106195f99a 192.168.33.13:7005 slave 404cf1ecf54d4df46d5faaec4103cfdf67888ad2 0 1446115186435 6 connected
3d2b7dccfc45ae2eb7aeb9e0bf001b0ac8f7b3da 192.168.33.13:7000 master - 0 1446115184426 1 connected 0-4095
6650a95b874cacf399f174cb7a1b3802fc9bcef9 192.168.33.13:7007 slave 35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 0 1446115184426 8 connected
35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003 master - 0 1446115184426 4 connected 12288-16383

先看下每一条的结构:

<id> <ip:port> <flags> <master> <ping-sent> <pong-recv> <config-epoch> <link-state> <slot> <slot> ... <slot>

[节点id] [ip:端口] [标志(master、myself、salve)] [(- 或者主节id)] [ping发送的毫秒UNIX时间,0表示没有ping] [pong接收的unix毫秒时间戳] [配置-epoch] [连接状态] [槽点]

cluster meet

将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子

我们一般会用redis-trib.rb add-node 192.168.33.13:7009 192.168.33.13:7000 这种方式将一个节点加入队列。这是不需要连接redis-cli客户端。

其实,也可以用cluster meet命令,使用方法:

cluster meet <ip> <port>

我们来实践下,新建一个7009新节点,然后试着用这个命令加入到集群中来:

127.0.0.1:7000> cluster meet 192.168.33.13 7009
OK
127.0.0.1:7000> cluster nodes
....
70795a3a7b93b7d059124e171cd46ba1683d6b7d 192.168.33.13:7009 master - 0 1446198910590 0 connected

现在7009已经成功加入到来集群当中,同样,还没有分配槽点给它。槽点分配在下面的命令中再仔细说。

cluster forget

从集群中移除一个节点。这个功能:

redis-trib del-node 192.168.33.13:7009 `<node-id>`

类似。同样,删除从节点,可以直接删除。删除主节点,要是有slot的话需要先迁移。

我们就来删除上一步加的这个192.168.33.13 7009,他是一个master 节点,但是里面还没分配slot,所以,我们删除试一下:

使用方法为:

 cluster forget <node_id>

开始:

127.0.0.1:7000> cluster forget 70795a3a7b93b7d059124e171cd46ba1683d6b7d
OK

提示OK了,说明已经成功了。

再看下node 列表:

127.0.0.1:7000> cluster nodes
a035546046a607487436cf354c187b1712edf39b 192.168.33.13:7006 slave 6f5cd78ee644c1df9756fc11b3595403f51216cc 0 1448519211988 7 connected
f325d80e770ce319e4490818a49bad033cce942c 192.168.33.13:7008 slave 3
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值