1.redis cluster命令
集群(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
将节点的配置文件保存到硬盘里面
-
-
cluster slaves <node_id>
列出该slave节点的master节点
-
-
cluster set-config-epoch
强制设置configEpoch
-
槽(slot)
-
cluster addslots <slot> [slot ...]
将一个或多个槽(slot)指派(assign)给当前节点
-
-
cluster delslots <slot> [slot ...]
移除一个或多个槽对当前节点的指派
-
-
cluster flushslots
移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点
-
-
cluster setslot <slot> node <node_id>
将槽slot指派给node_id指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽,然后再进行指派
-
13
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槽中的键
-
其它
20 .
cluster myid
返回节点的ID-
cluster slots
返回节点负责的slot
-
-
cluster reset
重置集群,慎用
-
2.redis cluster状态
cluster_state:ok
如果当前redis发现有failed的slots,默认为把自己cluster_state从ok个性为fail, 写入命令会失败。如果设置cluster-require-full-coverage为no,则无此限制。
cluster_slots_assigned:16384 #已分配的槽
cluster_slots_ok:16384 #槽的状态是ok的数目
cluster_slots_pfail:0 #可能失效的槽的数目
cluster_slots_fail:0 #已经失效的槽的数目
cluster_known_nodes:6 #集群中节点个数
cluster_size:3 #集群中设置的分片个数
cluster_current_epoch:15 #集群中的currentEpoch总是一致的,currentEpoch越高,代表节点的配置或者操作越新,集群中最大的那个node epoch
cluster_my_epoch:12 #当前节点的config epoch,每个主节点都不同,一直递增, 其表示某节点最后一次变成主节点或获取新slot所有权的逻辑时间.
cluster_stats_messages_sent:270782059
cluster_stats_messages_received:270732696
1、集群是如何判断是否有某个节点挂掉
首先要说的是,每一个节点都存有这个集群所有主节点以及从节点的信息。它们之间通过互相的ping-pong判断是否节点可以连接上。如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的备用节点。2、集群进入fail状态的必要条件
A、某个主节点和所有从节点全部挂掉,我们集群就进入faill状态。
B、如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态.
C、如果集群任意master挂掉,且当前master没有slave.集群进入fail状态
172.16.160.67:7006> cluster nodes
a6e8379b9d5132e65f15f1a417f08e3d05dc85c1 172.16.160.65:7002 master - 0 1535962131033 8 connected 5461-10922
610ae4d04b49aefe4e6f7b41d7eaa0b65149c779 172.16.160.66:7003 slave a6e8379b9d5132e65f15f1a417f08e3d05dc85c1 0 1535962129030 8 connected
e920f7e691bf6e38931d67f30de37ce222350896 172.16.160.67:7006 myself,slave 29e42914c1fcdc3ba5876c956d071c609f241595 0 0 6 connected
29e42914c1fcdc3ba5876c956d071c609f241595 172.16.160.67:7005 master - 0 1535962131533 5 connected 10923-16383
d351bd7b7cdec9abe1347281b78dbe3efe5cf053 172.16.160.65:7001 master - 0 1535962132034 1 connected 0-5460
a549116303d3400f52ca6946ccc0dc977ba735f8 172.16.160.66:7004 slave d351bd7b7cdec9abe1347281b78dbe3efe5cf053 0 1535962130032 4 connected
说明:
节点ID:例如a6e8379b9d5132e65f15f1a417f08e3d05dc85c1
ip:port:节点的ip地址和端口号,例如172.16.160.65:7002
flags:节点的角色(master,slave,myself)以及状态(pfail,fail)
如果节点是一个从节点的话,那么跟在flags之后的将是主节点的节点ID,例如172.16.160.66:7003主节点的ID就是a6e8379b9d5132e65f15f1a417f08e3d05dc85c1
集群最近一次向节点发送ping命令之后,过了多长时间还没接到回复
节点最近一次返回pong回复的时间
节点的配置纪元(config epoch)
本节点的网络连接情况
节点目前包含的槽,例如172.16.160.65:7002目前包含的槽为5461-10922