在线文档教程

client kill

CLIENT

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

自2.4.0起可用。

时间复杂度: O(N)其中 N 是客户端连接数

CLIENT KILL 命令关闭给定的客户端连接。截至 Redis 2.8.11 ,可以仅通过客户端地址关闭连接,使用以下格式:

CLIENT KILL addr:port

ip:port应该与由客户端列表命令(返回线addr字段)。

但是,从 Redis 2.8.12 或更高版本开始,该命令接受以下格式:

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

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

  • CLIENT KILL ADDR ip:port。这与旧的三参数行为完全一样。

  • CLIENT KILL ID client-id。允许通过其唯一ID字段来终止客户端,该字段是从 Redis 2.8.12 开始的 CLIENT LIST 命令中引入的。

  • CLIENT KILL TYPE type,其中类型是之一normalmasterslavepubsub(的master类型可从V3.2)。这将关闭指定类中所有客户端的连接。请注意,被锁定到 MONITOR 命令中的客户端被认为属于normal该类。

  • CLIENT KILL SKIPME yes/no。默认情况下,这个选项被设置为yes,也就是说,调用该命令的客户端不会被no终止,但是设置该选项的效果也会导致调用该命令的客户端被终止。

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

CLIENT KILL addr 127.0.0.1:6379 type slave

是有效的,只会处理具有指定地址的从站。这种包含多个过滤器的格式目前很少有用。

当使用新表单时,命令不再返回OK或发生错误,而是终止的客户机数量,可能为零。

CLIENT KILL 和 Redis Sentinel

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

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

返回值

当用三个参数格式调用时:

简单的字符串回复:OK如果连接存在并且已关闭

当用过滤器/值格式调用时:

整数回复:已解决的客户数量。