*Redis CLIENT LIST 命令

CLIENT LIST 返回所有连接到 Redis 服务器的客户端的详细信息和统计。


*语法

CLIENT LIST [TYPE <normal | master | replica | pubsub>] [ID <id> [id ...]] [ADDR <ip:port>] [LADDR <ip:port>] [SKIPME <yes | no>]

*参数说明

参数 类型 必填 说明
TYPE String 过滤客户端类型:normal(普通)、master(主节点)、replica(从节点)、pubsub(订阅)
ID Integer 过滤指定 ID 的客户端,支持多个
ADDR String 过滤指定远程地址的客户端
LADDR String 过滤指定本地地址的客户端
SKIPME String 是否排除当前客户端:yes(排除)或 no(包含)

*返回值

  • String:多行文本,每行一个客户端的信息,字段格式为 key=value

*时间复杂度

O(N),N 为客户端连接数量。


*示例

*列出所有客户端

> CLIENT LIST
id=3 addr=127.0.0.1:54321 fd=8 name= age=120 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=17108 events=r cmd=client|list user=default redir=-1 resp=2
id=4 addr=127.0.0.1:54322 fd=9 name=myapp age=60 idle=30 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=4 obl=0 oll=0 omem=0 tot-mem=17080 events=r cmd=get user=default redir=-1 resp=2

*按类型过滤

> CLIENT LIST TYPE normal
id=3 addr=127.0.0.1:54321 fd=8 name= age=120 idle=0 flags=N db=0 ...

*按 ID 过滤

> CLIENT LIST ID 3 4
id=3 addr=127.0.0.1:54321 ...
id=4 addr=127.0.0.1:54322 ...

*常见错误

错误 原因 解决
ERR wrong number of arguments 参数格式错误 检查可选参数是否正确
ERR syntax error 未知的过滤选项 使用 TYPE / ID / ADDR / LADDR / SKIPME

*最佳实践

  • 定期监控连接数,防止连接泄漏导致资源耗尽
  • 关注 idle 字段,清理长期空闲的连接
  • 使用 CLIENT SETNAME 命名连接,便于在 LIST 中识别来源
  • 监控 tot-mem 字段,发现内存占用异常的连接
  • 使用 SKIPME yes 排除当前连接,避免误杀管理连接

*FAQ

Q1: 如何统计当前连接数? A: 计算 CLIENT LIST 输出的行数,或使用 INFO clients 查看 connected_clients

Q2: 如何找到最空闲的连接? A: 解析 CLIENT LIST 输出,按 idle 字段降序排序。

Q3: flags 字段中的字母代表什么? A: N=普通, M=主节点, S=从节点, P=Pub/Sub, O=监控, x=关闭中, b=阻塞等待, d=正在读取多字节, u=未认证, c=RESP2->RESP3 转换中, A=ACL 跟踪, r=只读等。