CLIENT KILL

用法
CLIENT KILL 〈 旧格式 | 〈 [ ID client-id ] | [ [ ID client-id ] | ... ] [ TYPE normal | master | primary | slave | replica | pubsub ] | [ USER username ] | [ ADDR addr ] | [ LADDR laddr ] | [ SKIPME YES | NO ] | [ MAXAGE maxage ] | [ NAME name ] | [ IDLE idle ] | [ FLAGS flags ] | [ LIB-NAME lib-name ] | [ LIB-VER lib-ver ] | [ DB db ] | [ CAPA capa ] | [ IP ip ] 〉 [ 〈 [ ID client-id ] | [ [ ID client-id ] | ... ] [ TYPE normal | master | primary | slave | replica | pubsub ] | [ USER username ] | [ ADDR addr ] | [ LADDR laddr ] | [ SKIPME YES | NO ] | [ MAXAGE maxage ] | [ NAME name ] | [ IDLE idle ] | [ FLAGS flags ] | [ LIB-NAME lib-name ] | [ LIB-VER lib-ver ] | [ DB db ] | [ CAPA capa ] | [ IP ip ] 〉 ... ] 〉
复杂度
O(N),其中 N 为客户端连接数
版本
2.4.0
ACL 类别
@connection, @admin, @dangerous, @slow

CLIENT KILL 命令关闭给定的客户端连接。该命令支持两种格式:旧格式

CLIENT KILL addr:port

ip:port 应与 CLIENT LIST 命令返回的行(addr 字段)匹配。

新格式

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

使用新格式,可以通过不同的属性而不是仅通过地址来终止客户端。以下过滤器可用:

  • CLIENT KILL ADDR ip:port。这与旧的三参数行为完全相同。
  • CLIENT KILL LADDR ip:port。终止所有连接到指定本地(绑定)地址的客户端。
  • CLIENT KILL ID client-id [client-id ...]。允许通过其唯一的 ID 字段终止客户端。客户端 ID 可以通过 CLIENT LIST 命令获取。该过滤器支持一个或多个 client-id 参数。
  • CLIENT KILL TYPE type,其中 *type* 是 normalmasterreplicapubsub 之一。这将关闭指定类别中**所有客户端**的连接。请注意,在 MONITOR 命令中被阻塞的客户端被视为属于 normal 类别。
  • CLIENT KILL USER username。关闭所有使用指定 ACL 用户名进行身份验证的连接,但如果该用户名未映射到现有 ACL 用户,则返回错误。
  • CLIENT KILL SKIPME yes/no。默认情况下,此选项设置为 yes,即调用该命令的客户端不会被终止,但将此选项设置为 no 将会终止调用该命令的客户端。
  • CLIENT KILL MAXAGE maxage。关闭所有比指定时长(以秒为单位)更旧的连接。
  • CLIENT KILL FLAGS flags。仅终止其标志字符串包含指定字符的客户端。如果未使用有效标志,则返回错误。
  • CLIENT KILL NAME name。终止具有指定名称的客户端。
  • CLIENT KILL IDLE idle。仅终止空闲时间至少为指定时长的客户端。
  • CLIENT KILL LIB-NAME lib-name。终止使用指定库名称的客户端。
  • CLIENT KILL LIB-VER lib-version。终止运行指定库版本的客户端。
  • CLIENT KILL DB db。终止在指定数据库 ID 上操作的客户端。
  • CLIENT KILL IP ip。终止具有指定源 IP 地址的客户端。
  • CLIENT KILL CAPA capa。终止具有指定能力的客户端。

可以同时提供多个过滤器。该命令将通过逻辑 AND 处理多个过滤器。例如

CLIENT KILL addr 127.0.0.1:12345 type pubsub

是有效的,并且将仅终止具有指定地址的 pubsub 客户端。目前,包含多个过滤器的这种格式很少有用。

使用新格式时,该命令不再返回 OK 或错误,而是返回被终止的客户端数量,该数量可能为零。

CLIENT KILL 和 Valkey Sentinel

当实例重新配置时,Valkey Sentinel 使用 CLIENT KILL 来终止客户端连接。此机制确保客户端与 Sentinel 重新建立连接,刷新其配置。

注意

由于 Valkey 的单线程特性,在客户端连接正在执行命令时无法终止它。从客户端的角度来看,连接永远不会在命令执行过程中关闭。但是,客户端只有在发送下一个命令时(并导致网络错误)才会注意到连接已关闭。

RESP2/RESP3 回复

以下之一

  • 简单字符串回复:当以三参数格式调用且连接已关闭时返回 OK

  • 整数回复:当以过滤器/值格式调用时,返回被终止的客户端数量。

历史

版本 变更
2.8.12

添加了新过滤器格式。

2.8.12

添加了 ID 选项。

3.2.0

TYPE 选项添加了 master 类型。

5.0.0

slave TYPE 替换为 replicaslave 仍受支持以实现向后兼容。

6.2.0

添加了 LADDR 选项。

8.0.0

添加了 MAXAGE 选项。

8.0.0

master TYPE 替换为 primarymaster 仍受支持以实现向后兼容。

8.1.0

ID 选项接受多个 ID。

9.0.0

添加了 NAME、IDLE、FLAGS、LIB-NAME、LIB-VER、DB、CAPA 和 IP 过滤器。