Redis 基础教程

Redis 命令

Redis 高级教程

Redis 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/redis-command-client-kill.html

Redis CLIENT KILL 命令

Redis 服务器 Redis 服务器


Redis CLIENT KILL 命令关闭一个指定的连接。

命令格式

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

可用版本:>=2.4.0

时间复杂度:O(N),N 为客户端的连接数。

在 Redis 2.8.11 时,可以根据客户端地址关闭指定连接,关闭方式如下:

CLIENT KILL addr:port

ip:port 是 CLIENT LIST 命令里面列出的客户端连接之一。

但是,从 Redis 2.8.12 开始,这个命令改为如下格式:

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

新的格式可以根据不同属性杀死客户端而不是只按地址杀死。它们有以下一些格式:

  • CLIENT KILL ADDR ip:port

    老版本的形式。

  • CLIENT KILL ID client-id

    可以通过唯一 ID 字段杀死一个客户端,唯一 ID 可以通过 Redis 2.8.12 的 CLIENT LIST 命令查询。

  • CLIENT KILL TYPE type

    这里的 type 可以是 normal、slave、pubsub。这将关闭所有特殊类的客户端。请注意被认为是属于正常类的客户端将会被 MONITOR 命令监视到。

  • CLIENT KILL SKIPME yes/no

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

注意:从 Redis 5 开始,该命令不再使用 slave 关键字。您可以使用 TYPE replica 替换,然而老的命令形式也实现了向后兼容。

可以在执行命令时同时给定多个筛选条件。该命令会使用逻辑 AND 来处理多个筛选条件,比如:

CLIENT KILL addr 127.0.0.1:12345 type pubsub

是可以的,并且只会杀死给定 IP 地址的 pubsub。这种包含多个筛选条件的格式目前很少使用。

当使用新的格式时,该命令不再返回 OK 或者错误,而是返回被杀死的客户端个数,有可能为0。

CLIENT KILL and Redis Sentinel

当前版本的 Redis Sentinel(Redis 2.8.12 及以上) 可以在实例被重新配置的时候,使用 CLIENT KILL 杀死客户端。这样可以强制客户端和一个 Sentinel 重新连接并更新自己的配置。

注意

因为 Redis 的单线程属性,不可能在客户端执行命令时杀掉它。从客户端的角度看,永远无法杀死一个正在执行命令的连接。但是当客户端发送下一条命令时会意识到连接已被关闭,原因为网络错误。

命令返回值

老版本的命令(即三个参数形式):

  • 连接存在并被关闭返回 OK。

过滤/值格式的形式:

  • 被杀死的客户端个数。
Redis SCRIPT KILL 命令杀死当前正在运行的 Lua 脚本,当且仅当这个脚本没有执行过任何写操作时,这个命令才生效。这个命令主 ...
Redis CLIENT LIST 命令用于返回所有连接到 Redis 服务器的客户端相关信息。 ...
Redis CLIENT ID 命令返回当前连接的 ID。 ...
Redis CLIENT SETNAME 命令为当前连接分配一个名字。这个名字会显示在 CLIENT LIST 命令的结果中,用于识别当前正 ...
Redis CLIENT GETNAME 命令返回当前连接由 CLIENT SETNAME 设置的名字。如果没有用 CLIENT SETNA ...