Redis 基础教程

Redis 命令

Redis 高级教程

Redis 笔记

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 客户端使用这个命令时应该根据字段解析相应内容。(比如:处理未知的字段,应跳过该字段)。