redis client-kill命令


CLIENT KILL [ip:port] [ID client-id] [TYPE normal|master|slave|pubsub] [ADDR ip:port] [SKIPME yes/no]

CLIENT KILL 命令用来关闭给定的客户端连接。2.8.11之前的版本,只能通过 ip 和 port 来关闭客户端的连接。例如:

CLIENT KILL addr:port

ip:port 来自于 CLIENT LIST 命令的结果 (addr 字段)。

从 Redis 2.8.12 起,命令支持多种参数:

CLIENT KILL <filter> <value> ... ... <filter> <value>

Redis 开始支持ip地址之外的其他属性来关闭客户端,可过滤的选项如下:

  • CLIENT KILL ADDR ip:port。等同于之前的老版本功能。
  • CLIENT KILL ID client-id。通过客户端的唯一 ID 关闭,可以通过 CLIENT LIST 获取 ID
  • CLIENT KILL TYPE type, type 可以是 normal, master, slavepubsub 之一。(the master v3.2 起可用)。关闭特定类型的所有客户端。阻塞状态的 MONITOR 命令属于 normal 类型。
  • CLIENT KILL SKIPME yes/no。该选项默认为 yes, 表示调用该命令的客户端不被断开。如果该选项被设置为no 表示关闭所有连接包括调用该命令的连接。

允许一次使用多个过滤选项,这些选项之间是 AND 关系。例如: :

CLIENT KILL addr 127.0.0.1:6379 type slave

关闭通过 127.0.0.1:6379 连接的 slave 类型连接。

使用新格式的命令不再返回 OK 或者 error, 返回的是被关闭的连接个数,可以为0。

*CLIENT KILL 和 Redis Sentinel

Redis Sentinel,当实例呗重新配置时,为了使客户端与新的 Sentinel 建立连接并更新它的配置,Redis Sentinel 使用 CLIENT KILL 来关闭客户端连接。

*注意

由于单线程的原因,无法关闭一个执行命令中的连接。客户端会在执行下个命令的时候发现连接被关闭(返回网络错误)。

*返回值

老版三参数命令:

如果连接存在且已经被关闭返回 OK

新版带 filter / value 参数命令:

被关闭的客户端连接的个数。