教程 > Redis教程 > Redis 命令 阅读:38

Redis CLIENT KILL 命令

Redis CLIENT KILL 命令

返回 Redis 连接


Redis CLIENT KILL 命令用于关闭地址为 ip:port 的客户端连接。

语法

redis 127.0.0.1:6379> CLIENT KILL addr:port

ip:port 应该和 CLIENT LIST 命令返回的结果中 addr 列其中一行匹配。

因为 Redis 使用单线程设计,所以当 Redis 正在执行命令的时候,不会有客户端被断开连接。

如果要被断开连接的客户端正在执行命令,那么当这个命令执行之后,在发送下一个命令的时候,它就会收到一个网络错误,告知它自身的连接已被关闭。

从Redis 2.8.12开始,CLIENT KILL 命令改为如下格式:

redis 127.0.0.1:6379> CLIENT KILL <filter> <value> ... ... <filter> <value>

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

  • CLIENT KILL ADDR ip:port 和旧版的三个参数时的行为完全一样。
  • CLIENT KILL ID client-id 可以通过唯一ID字段杀死一个客户端,唯一ID可以通过Redis2.8.12的CLIENT LIST命令查询。
  • CLIENT KILL TYPE type 这里的 type 可以是 normal, slave, pubsub。 这将关闭给定烈性的所有客户端。请注意MONITOR命令阻塞的客户端是 normal 类型。
  • CLIENT KILL USER username 关闭使用 ACL username 连接的客户端。如果不存在 ACL user 则返回错误。
  • CLIENT KILL SKIPME yes/no 默认情况下是 yes, 调用该命令的客户端自身不被删掉,如果为 no 也会删除自身。

    注意: 从 Redis 5 起项目不再使用 slave 词汇。可以使用 TYPE replica 替代,仍然支持向后兼容。

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

redis 127.0.0.1:6379> CLIENT KILL addr 127.0.0.1:12345 type pubsub

这个命令会杀死给定IP地址的的slave。这种包含多个筛选条件的格式目前很少使用。

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

CLIENT KILL 和 Redis Sentinel

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

示例

# 列出所有已连接客户端

redis 127.0.0.1:6379> CLIENT LIST
addr=127.0.0.1:43501 fd=5 age=10 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client

# 杀死当前客户端的连接
redis 127.0.0.1:6379> CLIENT KILL 127.0.0.1:43501
OK

# 之前的连接已经被关闭,CLI 客户端又重新建立了连接
# 之前的端口是 43501 ,现在是 43504
redis 127.0.0.1:6379> CLIENT LIST
addr=127.0.0.1:43504 fd=5 age=0 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client

返回 Redis 连接

查看笔记

扫码一下
查看教程更方便