1.client list
- 返回所有连接到服务器的客户端信息和统计数据
- 客户端较多时频繁执行存在阻塞redis的可能
127.0.0.1:6379> client list
id=11 addr=127.0.0.1:45126 laddr=127.0.0.1:6379 fd=8 name= age=10754 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=40928 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 events=r cmd=client user=default redir=-1
2.client list命令结果属性
属性 | 说明 |
id | 客户端连接id |
addr | 客户端连接IP和端口 |
laddr | redis数据库连接地址和端口 |
fd | socket的文件描述符 |
name | 客户端连接名 |
age | 客户端连接存活时间 |
idle | 客户端连接空闲时间,单位秒。可以用于判断连接是否有没有被及时释放 |
flags | 客户端类型标识 |
db | 当前客户端正在使用的数据库索引下标 |
sub/psub | 当前客户端订阅的频道或模式数 |
multi | 当前事务中已执行命令个数 |
qbuf | 输入缓冲区总容量 |
qbuf-free | 输入缓冲区剩余容量 |
argv-mem | 下一个命令的不完整参数(已从查询缓冲区中提取) |
obl | 固定缓冲区的长度 |
oll | 动态缓冲区列表的长度 |
omem | 固定缓冲区和动态缓冲区使用的容量 |
tot-mem | 此客户端在其各个缓冲区中消耗的总内存 |
events | 文件描述符事件(r:可读;w:可写) |
cmd | 当前客户端最后一次执行的命令,不包含参数 |
user | 用户名称,默认default |
redir | 当前客户端跟踪重定向的客户端id |
3.client list中flag客户端标识种类
客户端类型 | 说明 |
N | 普通客户端,未设置任何flag |
M | 当前客户端是master节点 |
S | 当前客户端是slave节点 |
O | 当前客户端正在执行monitor命令 |
X | 当前客户端正在执行事务 |
b | 当前客户端正在等待阻塞事件 |
i | 当前客户端正在等待VM I/O,但是此时状态目前已经废弃不用 |
d | 一个受监视的键已被修改,exec命令将失败 |
u | 客户端未被阻塞 |
c | 回复完整输出后,关闭连接 |
A | 尽可能快地关闭连接 |
官方文档:https://redis.io/commands/client-list/
4.client kill ip:port
- 由于杀死指定客户端连接线程
127.0.0.1:6379> client kill 127.0.0.1:45126
OK
5.client信息查询
info clinets
##版本6.2.6,相对5版本新增了部分显示信息
# Clients
##当前redis节点的客户端连接数
connected_clients:1
##集群的连接数
cluster_connections:0
##客户端最大连接数
maxclients:10000
##当前所有输入缓冲区中队列对象个数的最大值
client_recent_max_input_buffer:24
##当前所有输出缓冲区中占用的最大容量
client_recent_max_output_buffer:0
##正在执行阻塞命令的客户端个数
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0
6.client相关配置参数
- maxclients:客户端最大连接数
- timeout:客户端空闲连接的超时时间
- tcp-keepalive:检测TCP连接活性的周期,默认为0,也就是不进行检测,如果需要设置,建议为60,那么redis会每隔60秒对它创建的TCP连接进行活性检测,防止大量死连接占用系统的资源
- tcp-backlog:TCP三次握手后,会将接受的连接放入队列中,tcp-backlog就是队列的大小,redis默认511.一般不需要修改该参数,该参数会受到操作系统的影响/proc/sys/net/core/somaxconn