Redis——常用命令

一、集群管理

1、查看集群信息:

cluster info

2、查看集群节点:

cluster nodes

3、副本信息:

info replication

Master:

Slave:

4、将当前节点设置为 node_id 指定的节点的从节点

cluster replicate <node_id>

5、计算键 key 应该被放置在哪个槽上

cluster keyslot <key>

6、添加节点

当集群的压力比较大时,可以通过动态的扩容提高集群的写读并发能力

# 添加主节点
redis-cli --cluster add-node ip3:7007 ip1:7001

使用add-node添加集群节点,第一个地址参数为要添加的redis实例地址,第二个参数为集群中任意一个实例地址,节点会默认被添加为主节点,请注意这个时候添加的主节点与其他的master相比具有两个特点

  • 它没有数据,因为它没有分配哈希槽
  • 因为它是没有分配插槽的设备,所以当从节点想成为主节点时,它不参与选举过程

添加成功的标识:

# 添加从节点
redis-cli --cluster add-node ip3:7007 ip1:7001 --cluster-slave

上述会把ip3:7007实例作为集群的从节点加入到集群中,会挑选拥有从服务器数量最少的主服务器,然后把新加入的节点作为该主服务器的从节点。

7、重新整理集群

当使用上述方式添加完主节点之后,添加进入的节点为空,并没有分配任何槽,此时我们需要执行reshard操作,为新添加的主节点分配插槽,已达到分担集群压力,提高并发能力的目的。

  •  1:开启重新分片(reshard)操作
redis-cli -h ip1 -p 7001 --cluster reshard ip1:7001
  • 2:指定需要重新reshard的slots的个数

  •  3:指定接收这些slots的插槽的目的节点id

  •  4:指定分配这些slots的插槽的源节点id,输入done为结束符
Source node #1:ca33b3d7a60f8df7b74473f86c11f84df609fa45
Source node #2:done

8、删除节点

当系统负载压力比较小的时候,为了避免耗费资源,可以选择动态的删除节点,命令如下所示:

redis-cli -h ip1 -p 7001 --cluster del-node ip1:7001 node-id

使用上述方式删除节点的时候,当删除节点为从节点的时候可以直接删除,当删除节点为主节点的时候,则必须主节点不为空,即需要把主节点的插槽及插槽中的数据分配给其他的主节点。

9、副本迁移

副本迁移在集群中的概念,即是在某些场景下,可能需要把一个主服务器的从节点迁移到另外一个主服务器上去,这种情况一般用在多从节点的情况下,为了提高系统的高可用性而进行的操作,
例如当有三个主服务器的情况下,其中一个主服务器有三个从节点,一个主服务器有两个从节点,一个主服务器只有一个从节点,如果一主一从这一对实例同时发生故障,将导致集群不可用,
这种情况下,可以把一主三从这一对的实例的一个从节点移动到一主一从这一对实例上,即可避免上述情况,提高了系统的可用性,
副本迁移的代码如下所示:
# 在相应的从节点上执行
cluster replicate <master-node-id>

10、加入或移除集群

cluster meet <ip> <port>  将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子
cluster forget <node_id> 从集群中移除 node_id 指定的节点。

11、槽(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)。

12、键

cluster keyslot <key> :计算键 key 应该被放置在哪个槽上。
cluster countkeysinslot <slot> :返回槽 slot 目前包含的键值对数量。
cluster getkeysinslot <slot> <count> :返回 count 个 slot 槽中的键 。
原文地址:https://www.cnblogs.com/caoweixiong/p/14178619.html