*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 快速获取当前连接的详细状态
  • 关注 ageidletot-mem 字段,识别异常连接
  • 配合 CLIENT LIST 获取所有连接的信息进行对比
  • 监控 tot-mem 防止单个客户端占用过多内存

*FAQ

Q1: CLIENT INFOCLIENT LIST 有什么区别? A: CLIENT INFO 只返回当前连接的信息;CLIENT LIST 返回所有连接的信息。

Q2: 如何查看内存占用最高的客户端? A: 使用 CLIENT LIST,然后按 tot-mem 字段排序。

Q3: idleage 有什么区别? A: age 是连接总存活时间;idle 是距离上次命令的空闲时间。