CLIENT KILL
终止打开的连接。
语法
CLIENT KILL ] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] | [MAXAGE maxage] [[ID client-id] | [TYPE ] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] | [MAXAGE maxage] ...]>>
引入版本:2.4.0
复杂度摘要:O(N)
CLIENT KILL 命令关闭给定的客户端连接。该命令支持两种格式,旧格式:
CLIENT KILL addr:port
ip:port 应与 CLIENT LIST 命令(addr 字段)返回的行匹配。
新格式:
CLIENT KILL <filter> <value> ... ... <filter> <value>
通过新的形式,可以通过不同的属性来杀死客户端,而不仅仅是通过地址来杀死客户端。请参阅下面的支持的过滤器列表。
可以同时提供多个过滤器。使用逻辑 AND 组合多个过滤器。
CLIENT KILL addr 127.0.0.1:12345 type pubsub
有效并且只会杀死具有指定地址的 pubsub 客户端。
当使用新形式时,该命令不再返回 OK 或错误,而是返回被杀死的客户端数量,该数量可能为零。
可选参数
提供旧版 ip:port 参数以通过地址或以下一个或多个过滤器关闭客户端,这些过滤器可以组合起来选择要关闭的客户端。
ip:port
关闭给定地址的客户端。这是传统的单参数形式。
ID client-id
仅关闭具有给定唯一 ID 的客户端。
TYPE NORMAL | MASTER | SLAVE | REPLICA | PUBSUB
仅关闭给定类型的客户端。
USER username
仅关闭通过给定 ACL 用户身份验证的客户端。
ADDR ip:port
仅关闭从给定地址连接的客户端。
LADDR ip:port
仅关闭连接到给定本地(服务器)地址的客户端。
SKIPME YES | NO
是否跳过调用客户端(YES,默认)或允许它也关闭(NO)。
MAXAGE maxage
仅关闭早于给定年龄(以秒为单位)的客户端。
详细说明
CLIENT KILL 和 Redis Sentinel
Redis Sentinel 的最新版本(Redis 2.8.12 或更高版本)使用 CLIENT KILL 来在重新配置实例时终止客户端,以强制客户端再次与一个 Sentinel 执行握手并更新其配置。
说明
由于Redis 的单线程特性,在执行命令时不可能终止客户端连接。从客户端的角度来看,连接永远不会在命令执行过程中关闭。但是,只有在发送下一个命令时,客户端才会注意到连接已关闭(并导致网络错误)。
Redis Software 与 Redis Cloud 兼容性
| Redis 软件 |
Redis Cloud |
说明 |
|---|---|---|
| ✅ 标准 |
✅ 标准 |
返回值
RESP2
以下之一: * 简单字符串回复:当以 3 参数格式调用并且连接已关闭时,OK。 * 整数回复:以过滤器/值格式调用时,被杀死的客户端数量。
RESP3
以下之一: * 简单字符串回复:当以 3 参数格式调用并且连接已关闭时,OK。 * 整数回复:以过滤器/值格式调用时,被杀死的客户端数量。
资料来源:Redis 官方 CLIENT KILL 文档;中文内容参考 Redis 文档许可。