客户端终止

语法
CLIENT KILL <ip:port | <[ID client-id] | [TYPE <NORMAL | MASTER |
  SLAVE | REPLICA | PUBSUB>] | [USER username] | [ADDR ip:port] |
  [LADDR ip:port] | [SKIPME <YES | NO>] | [MAXAGE maxage]
  [[ID client-id] | [TYPE <NORMAL | MASTER | SLAVE | REPLICA |
  PUBSUB>] | [USER username] | [ADDR ip:port] | [LADDR ip:port] |
  [SKIPME <YES | NO>] | [MAXAGE maxage] ...]>>
从以下位置开始可用:
2.4.0
时间复杂度:
O(N),其中 N 是客户端连接数
ACL 类别:
@admin, @slow, @dangerous, @connection,

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.杀死连接到指定本地 (bind) 地址的所有客户端。
  • CLIENT KILL ID client-id.允许通过其唯一ID田。客户IDCLIENT LIST命令。
  • CLIENT KILL TYPE type,其中 type 是以下之一normal,master,replicapubsub.这将关闭指定类中所有客户端的连接。请注意,阻止进入MONITOR命令被视为属于normal类。
  • CLIENT KILL USER username.关闭使用指定 ACL 用户名进行身份验证的所有连接,但是,如果用户名未映射到现有 ACL 用户,则返回错误。
  • CLIENT KILL SKIPME yes/no.默认情况下,此选项设置为yes,也就是说,调用该命令的客户端不会被终止,但是将此选项设置为no将同时终止调用该命令的客户端。
  • CLIENT KILL MAXAGE maxage.关闭所有早于指定期限(以秒为单位)的连接。在 Redis v7.4 中添加。

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

CLIENT KILL addr 127.0.0.1:12345 type pubsub

有效,并且只会杀死具有指定地址的 PubSub 客户端。这种包含多个过滤器的格式目前很少有用。

使用新表单时,该命令不再返回OK或错误,而是被杀死的客户端数,这可能为零。

CLIENT KILL 和 Redis Sentinel

最新版本的 Redis Sentinel(Redis 2.8.12 或更高版本)使用 CLIENT KILL 为了在重新配置实例时终止客户端,为了 强制客户端再次与一个 Sentinel 执行握手并更新 它的配置。

笔记

由于 Redis 的单线程特性,无法 在客户端连接执行命令时终止客户端连接。从 从客户端的角度来看,连接永远无法关闭 在执行命令的过程中。但是,客户端 将注意到连接已关闭,仅当 next 命令(并导致网络错误)。

RESP2/RESP3 回复

以下选项之一:


历史

  • 从 Redis 版本 2.8.12 开始:添加了新的筛选条件格式。
  • 从 Redis 版本 2.8.12 开始:ID选择。
  • 从 Redis 版本 3.2.0 开始:添加了master键入 forTYPE选择。
  • 从 Redis 版本 5.0.0 开始:已替换slave TYPEreplica.slave仍然支持向后兼容性。
  • 从 Redis 版本 6.2.0 开始:LADDR选择。
  • 从 Redis 版本 7.4.0 开始:MAXAGE选择。
为本页评分
返回顶部 ↑