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