CLIENT LIST
优质
小牛编辑
134浏览
2023-12-01
CLIENT LIST
以人类可读的格式,返回所有连接到服务器的客户端信息和统计数据。
redis> CLIENT LIST addr=127.0.0.1:43143 fd=6 age=183 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 addr=127.0.0.1:43163 fd=5 age=35 idle=15 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping addr=127.0.0.1:43167 fd=7 age=24 idle=6 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=get
- 可用版本
- >= 2.4.0
- 时间复杂度
- O(N) , N 为连接到服务器的客户端数量。
- 返回值
命令返回多行字符串,这些字符串按以下形式被格式化:
- 每个已连接客户端对应一行(以
LF
分割) - 每行字符串由一系列
属性=值
形式的域组成,每个域之间以空格分开
以下是域的含义:
addr
: 客户端的地址和端口fd
: 套接字所使用的文件描述符age
: 以秒计算的已连接时长idle
: 以秒计算的空闲时长flags
: 客户端 flag (见下文)db
: 该客户端正在使用的数据库 IDsub
: 已订阅频道的数量psub
: 已订阅模式的数量multi
: 在事务中被执行的命令数量qbuf
: 查询缓存的长度(0
表示没有查询在等待)qbuf-free
: 查询缓存的剩余空间(0
表示没有剩余空间)obl
: 输出缓存的长度oll
: 输出列表的长度(当输出缓存没有剩余空间时,回复被入队到这个队列里)omem
: 输出缓存的内存占用量events
: 文件描述符事件(见下文)cmd
: 最近一次执行的命令
客户端 flag 可以由以下部分组成:
O
: 客户端是 MONITOR 模式下的附属节点(slave)S
: 客户端是一般模式下(normal)的附属节点M
: 客户端是主节点(master)x
: 客户端正在执行事务b
: 客户端正在等待阻塞事件i
: 客户端正在等待 VM I/O 操作(已废弃)d
: 一个受监视(watched)的键已被修改,EXEC
命令将失败c
: 在将回复完整地写出之后,关闭链接u
: 客户端未被阻塞(unblocked)A
: 尽可能快地关闭连接N
: 未设置任何 flag
文件描述符事件可以是:
r
: 客户端套接字(在事件 loop 中)是可读的(readable)w
: 客户端套接字(在事件 loop 中)是可写的(writeable)
- 每个已连接客户端对应一行(以
注解
为了 debug 的需要,经常会对域进行添加和删除,一个安全的 Redis 客户端应该可以对 CLIENT LIST
的输出进行相应的处理(parse),比如忽略不存在的域,跳过未知域,诸如此类。