扫码一下
查看教程更方便
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>
新的格式可以根据不同属性杀死客户端而不是只按地址杀死。他们有以下选项:
注意: 从 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。
当前版本的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