# Client Kill
关闭客户端连接
语法
CLIENT KILL <ip:port | <[ID client-id] | [TYPE <NORMAL | MASTER |
SLAVE | REPLICA | PUBSUB>] | [USER username] | [ADDR ip:port] |
[LADDR ip:port] | [SKIPME yes/no] [[ID client-id] | [TYPE <NORMAL
| MASTER | SLAVE | REPLICA | PUBSUB>] | [USER username] |
[ADDR ip:port] | [LADDR ip:port] | [SKIPME yes/no] ...]>>
可用版本:
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
. 杀死所有连接到指定本地(绑定)地址的客户端。CLIENT KILL ID client-id
. 允许通过其独特的ID
领域杀死客户。ID
使用该CLIENT LIST
命令检索客户端。CLIENT KILL TYPE type
,其中type是normal
,master
和之一。这将关闭指定类中**所有客户端的连接。**请注意,被命令阻止的客户端被认为属于该类。replica``pubsub``MONITOR``normal
CLIENT KILL USER username
. 关闭所有使用指定ACL用户名进行身份验证的连接,但如果用户名未映射到现有 ACL 用户,则会返回错误。CLIENT KILL SKIPME yes/no
. 默认情况下,此选项设置为yes
,即调用该命令的客户端不会被杀死,但是将此选项设置为no
也会具有杀死调用该命令的客户端的效果。
可以同时提供多个过滤器。该命令将通过逻辑 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 的单线程特性,无法在执行命令时终止客户端连接。从客户端的角度来看,连接永远不会在执行命令的过程中关闭。但是,只有在发送下一条命令时,客户端才会注意到连接已关闭(并导致网络错误)。
# 返回
当使用三个参数格式调用时:
简单字符串回复:OK
如果连接存在且已关闭
使用过滤器/值格式调用时:
整数回复:被杀死的客户端数量。
# 历史
- 从 Redis 版本 2.8.12 开始:添加了新的过滤器格式。
- 从 Redis 版本 2.8.12 开始:
ID
选项。 - 从 Redis 版本 3.2.0 开始:添加
master
了 type in forTYPE
选项。 - 从 Redis 版本 5.0.0 开始:替换
slave
TYPE
为replica
.slave
仍然支持向后兼容。 - 从 Redis 版本 6.2.0 开始:
LADDR
选项。
# 反馈
如果您在此页面上发现问题,或有改进建议,请提交请求以合并或打开存储库中的问题。
← Sync Command Info →