Redis 基础教程

Redis 命令

Redis 高级教程

Redis 笔记

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

Redis CLIENT LIST 命令

Redis 服务器 Redis 服务器


Redis CLIENT LIST 命令用于返回所有连接到 Redis 服务器的客户端相关信息。

命令格式

CLIENT LIST [TYPE normal|master|replica|pubsub]

可用版本:>=2.4.0

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

从 Redis 5.0 版本开始,增加了 Type type 子命令,该子命令用来过滤出指定的客户端类型,可选的客户端类型有 normal、master、replica 和 pubsub。

值得注意的是,阻止进入 MONITOR 命令的客户端被视为属于 normal。

命令返回值

返回一串复杂的字符串,具体格式如下:

  • 每个已连接客户端对应一行(以 LF 分割)。
  • 每行字符串由一系列属性=值(property=value)形式的域组成,每个域之间以空格分开。

下面是各字段的含义:

  • id:唯一的 64 位的客户端 ID(Redis 2.8.12 开始支持)。
  • name:客户端使用 CLIENT SETNAME 设置的名称。
  • addr:客户端的地址和端口。
  • fd:套接字所使用的文件描述符。
  • age:以秒为单位计算的已连接时长。
  • idle:以秒为单位计算的空闲时长。
  • flags:客户端 flag。
  • db:该客户端正在使用的数据库 ID。
  • sub:已订阅频道的数量。
  • psub:模式匹配的已订阅的数量。
  • multi:在事务中被执行的命令数量。
  • qbuf:查询缓冲区的长度(字节为单位,0 表示没有分配查询缓冲区)。
  • qbuf-free:查询缓冲区剩余空间的长度(字节为单位,0 表示没有剩余空间)。
  • obl:输出缓冲区的长度(字节为单位,0 表示没有分配输出缓冲区)。
  • oll:输出列表包含的对象数量(当输出缓冲区没有剩余空间时,命令回复会以字符串对象的形式被入队到这个队列里)。
  • omem:输出缓冲区和输出列表占用的内存总量。
  • events:文件描述符事件。
  • cmd:最近一次执行的命令。

客户端 flag 可以由以下部分组成:

  • A:尽可能快地关闭连接。
  • b:客户端正在等待阻塞事件。
  • c:将回复完整地写出之后,关闭连接。
  • d:一个受监视(watched)的键已被修改,EXEC 命令将失败。
  • i:客户端正在等待 VM I/O 操作(已废弃)。
  • M:客户端是主节点(master)。
  • N:未设置任何 flag。
  • O:客户端是 MONITOR 模式下的附属节点(slave)。
  • P:客户端是 Pub/Sub 模式下的订阅者(subscriber)。
  • r:客户端是只读模式的集群节点。
  • S:客户端是一般模式下(normal)的附属节点。
  • u:客户端未被阻塞(unblocked)。
  • U:通过 Unix 套接字连接的客户端。
  • x:客户端正在执行事务。

文件描述符事件可以是:

  • r:客户端套接字(在事件 loop 中)是可读的(readable)。
  • w:客户端套接字(在事件 loop 中)是可写的(writeable)。

注意

新字段会随着测试有规律的添加。某些字段将来可能会被删除。一个版本安全的 Redis 客户端使用这个命令时应该根据字段解析相应内容。(比如:处理未知的字段,应跳过该字段)。

Redis CLIENT ID 命令返回当前连接的 ID。 ...
Redis CLIENT KILL 命令关闭一个指定的连接。 ...
Redis CLIENT SETNAME 命令为当前连接分配一个名字。这个名字会显示在 CLIENT LIST 命令的结果中,用于识别当前正 ...
Redis CLIENT GETNAME 命令返回当前连接由 CLIENT SETNAME 设置的名字。如果没有用 CLIENT SETNA ...
Redis CLIENT UNBLOCK 命令可以通过其他连接解除客户端的阻塞状态,如客户端正在执行具有阻塞功能的命令,比如 BRPOP、X ...