*Redis CLIENT INFO 命令
CLIENT INFO 返回当前客户端连接的详细信息。
*语法
CLIENT INFO
*参数说明
无参数。
*返回值
- String:当前客户端的详细信息,包含多个键值对字段
*时间复杂度
O(1)
*
*示例
> CLIENT INFO
id=3 addr=127.0.0.1:54321 laddr=127.0.0.1:6379 fd=8 name= age=120 idle=0 flags=N db=0 sub=0 psub=0 ssub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=17108 events=r cmd=client|info user=default redir=-1 resp=2
*字段说明
| 字段 | 说明 |
|---|---|
| id | 客户端唯一 ID |
| addr | 客户端地址和端口 |
| laddr | 本地地址和端口 |
| fd | 套接字文件描述符 |
| name | 客户端名称(通过 CLIENT SETNAME 设置) |
| age | 连接存活时间(秒) |
| idle | 空闲时间(秒) |
| flags | 连接标志(N=普通, M=主节点, S=从节点, P=Pub/Sub 等) |
| db | 当前选中的数据库编号 |
| sub | 订阅的频道数量 |
| psub | 订阅的模式数量 |
| ssub | 共享订阅数量 |
| multi | 事务中的命令数量(-1 表示不在事务中) |
| qbuf | 查询缓冲区大小 |
| qbuf-free | 查询缓冲区剩余空间 |
| argv-mem | 参数内存占用 |
| obl | 输出缓冲区长度 |
| oll | 输出列表长度 |
| omem | 输出缓冲区内存占用 |
| tot-mem | 该连接占用的总内存 |
| events | 文件事件状态(r=可读, w=可写) |
| cmd | 最后执行的命令 |
| user | 认证用户名 |
| redir | 客户端缓存重定向 ID |
| resp | 使用的 RESP 协议版本 |
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR wrong number of arguments | 提供了多余参数 | CLIENT INFO 不接受参数 |
*最佳实践
- 使用 CLIENT INFO 快速获取当前连接的详细状态
- 关注
age、idle、tot-mem字段,识别异常连接 - 配合 CLIENT LIST 获取所有连接的信息进行对比
- 监控
tot-mem防止单个客户端占用过多内存
*FAQ
Q1: CLIENT INFO 和 CLIENT LIST 有什么区别? A: CLIENT INFO 只返回当前连接的信息;CLIENT LIST 返回所有连接的信息。
Q2: 如何查看内存占用最高的客户端?
A: 使用 CLIENT LIST,然后按 tot-mem 字段排序。
Q3: idle 和 age 有什么区别?
A: age 是连接总存活时间;idle 是距离上次命令的空闲时间。