在前面几个小结,非常细致了说了一下Redis cluster 的搭建以及伸缩容,这里我就简单地总结一下命令

  

  命令总结:

1.搭建集群命令:
    redis-cli --cluster create  127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1    ##redis节点搭建集群(这个很简单)
    cluster nodes  ##查看集群节点状态
    redis-cli --cluster check -h 127.0.0.1 -p 6379 ##检查集群完整性
  
  2.redis-cluster扩容
    redis-cli --cluster add-node 127.0.0.1:6385  127.0.0.1:6379    ##第一个参数是新节点地址,第二参数是原集群中任意一个地址   
    redis-cli --cluster add-node 127.0.0.1:6386  127.0.0.1: --cluster-slave    ##这里添加另外一个节点,该节点作为一个从节点角色加入原集群中,因为这里没有指定具体的主节点node_id,所以它将随机加入一个拥有较少的主节点中。。。
    redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000 --cluster-slave  --cluster-master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e    ##指定具体的mater,这里就执行了master的node_id,说明要加入这个节点中作为从节点。。。  3.重新分配槽位
    redis-cli --cluster reshard 127.0.0.1:6379    ##这个命令既可以扩容也可以缩容,主要取决于目标节点和源节点写的位置。
  4.重新均衡一下槽的顺序性
    redis-cli --cluster rebalance  127.0.0.1:6379
  5.redis-cluster缩容
    redis缩容,首先要把要下线的节点的槽位数据移动到别的节点上,因此这里还是使用命令
    redis-cli --cluster reshard 127.0.0.1:6379  ##这里要注意源节点和目标节点,以及要迁移的槽的数量
  6.remove 节点(这里一定要先走该节点的槽位上数据)
  redis-cli --cluster del-node 127.0.0.1:7000 `<node-id>` ##first argument is just a random node in the cluster, the second argument is the ID of the node you want to remove

   这里介绍一下redis-cli--cluster 命令

   说明:redis cluster 在5.0之后就取消了ruby脚本 redis-trib.rb支持(手工命令行添加集群方式不变),集合到了redis-cli中,避免了再安装ruby的相关环境。直接使用redis-cli的参数--cluster来取代。为了方便后面查询就说明下如何使用该命令进行cluster的创建和管理。

redis-cli --cluster help

redis-cli --cluster help
Cluster Manager Commands:
  create         host1:port1 ... hostN:portN   #创建集群
                 --cluster-replicas <arg>      #从节点个数
  check          host:port                     #检查集群
                 --cluster-search-multiple-owners #检查是否有槽同时被分配给了多个节点
  info           host:port                     #查看集群状态
  fix            host:port                     #修复集群
                 --cluster-search-multiple-owners #修复槽的重复分配问题
  reshard        host:port                     #指定集群的任意一节点进行迁移slot,重新分slots
                 --cluster-from <arg>          #需要从哪些源节点上迁移slot,可从多个源节点完成迁移,以逗号隔开,传递的是节点的node id,还可以直接传递--from all,这样源节点就是集群的所有节点,不传递该参数的话,则会在迁移过程中提示用户输入
                 --cluster-to <arg>            #slot需要迁移的目的节点的node id,目的节点只能填写一个,不传递该参数的话,则会在迁移过程中提示用户输入
                 --cluster-slots <arg>         #需要迁移的slot数量,不传递该参数的话,则会在迁移过程中提示用户输入。
                 --cluster-yes                 #指定迁移时的确认输入
                 --cluster-timeout <arg>       #设置migrate命令的超时时间
                 --cluster-pipeline <arg>      #定义cluster getkeysinslot命令一次取出的key数量,不传的话使用默认值为10
                 --cluster-replace             #是否直接replace到目标节点
  rebalance      host:port                                      #指定集群的任意一节点进行平衡集群节点slot数量
                 --cluster-weight <node1=w1...nodeN=wN>         #指定集群节点的权重
                 --cluster-use-empty-masters                    #设置可以让没有分配slot的主节点参与,默认不允许
                 --cluster-timeout <arg>                        #设置migrate命令的超时时间
                 --cluster-simulate                             #模拟rebalance操作,不会真正执行迁移操作
                 --cluster-pipeline <arg>                       #定义cluster getkeysinslot命令一次取出的key数量,默认值为10
                 --cluster-threshold <arg>                      #迁移的slot阈值超过threshold,执行rebalance操作
                 --cluster-replace                              #是否直接replace到目标节点
  add-node       new_host:new_port existing_host:existing_port  #添加节点,把新节点加入到指定的集群,默认添加主节点
                 --cluster-slave                                #新节点作为从节点,默认随机一个主节点
                 --cluster-master-id <arg>                      #给新节点指定主节点
  del-node       host:port node_id                              #删除给定的一个节点,成功后关闭该节点服务
  call           host:port command arg arg .. arg               #在集群的所有节点执行相关命令
  set-timeout    host:port milliseconds                         #设置cluster-node-timeout
  import         host:port                                      #将外部redis数据导入集群
                 --cluster-from <arg>                           #将指定实例的数据导入到集群
                 --cluster-copy                                 #migrate时指定copy
                 --cluster-replace                              #migrate时指定replace
  help          
For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.