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