CLIENT LIST 是什么
CLIENT LIST 列出当前连接的信息:连接编号、对端地址、空闲时间、最近执行的命令、订阅数量,以及输入输出缓冲占用。排障时它用来把异常连接从正常连接里挑出来,例如吃内存的慢消费者、长期堆积的订阅端,或数量异常的应用实例。
基本信息
| 命令 | CLIENT LIST [TYPE normal|master|replica|pubsub] [ID id ...] |
|---|---|
| 过滤维度 | TYPE 按连接类型、ID 精确指定、USER 按 ACL 用户 |
| 输出形式 | 每行一个连接,字段以空格分隔 |
| 配套命令 | CLIENT INFO 看单连接详情,CLIENT SETNAME 给连接命名 |
| 开销提示 | 连接数多时输出很长,建议用脚本过滤 |
典型使用场景
- 慢消费者排查:omem 持续偏大的订阅端或命令处理端
- 连接泄漏定位:应用重启后旧连接未回收,连接数只增不减
- 连接归属识别:靠 CLIENT SETNAME 约定的名字区分是哪个应用
- 复制健康检查:用 TYPE replica 看从库连接与上报偏移
- 大结果查询定位:qbuf 与 omem 同时偏大的连接
- 容量评估:统计各类型连接数,核对与 maxclients 的余量
常用调用
常用调用
redis-cli CLIENT LIST # 全量列出,量大时注意输出体积
redis-cli CLIENT LIST TYPE pubsub # 只看订阅连接
redis-cli CLIENT LIST TYPE replica # 只看复制连接
redis-cli CLIENT LIST ID 12345 # 只看指定编号的连接
redis-cli CLIENT INFO # 当前连接自身的详情
redis-cli CLIENT SETNAME order-service-01 # 给连接命名,便于后续溯源
redis-cli CLIENT LIST | wc -l # 快速统计连接行数输出逐列读法
| 字段 | 含义 | 关注点 |
|---|---|---|
| id | 连接编号 | 配合 CLIENT KILL ID 精确处置 |
| addr / laddr | 对端地址与本地地址 | 定位来源应用或负载均衡 |
| name / user | 连接名与 ACL 用户 | 溯源与权限排查 |
| idle | 空闲秒数 | 连接池空闲属正常状态,不是断连判据 |
| qbuf / qbuf-free | 输入缓冲占用与剩余 | 大命令或管道提交时升高 |
| omem | 输出缓冲占用 | 持续增长说明消费端跟不上 |
| sub / psub | 订阅的频道数与模式数 | 订阅泄漏时数量异常 |
| cmd | 最近执行的命令 | 判断这个连接在干什么 |
| tot-mem | 该连接的总内存占用 | 定位吃内存的连接 |
连接数多的时候靠人工浏览看不出规律,按字段过滤后再统计(例如按 name 聚合、按 omem 排序)才能发现异常分布。
输出里包含对端地址、命令名与用户名,属于运维敏感信息,外发、截图、贴进工单前先做脱敏处理。