Redis 客户端命令主要是用于管理 redis 客户端。
下面演示给客户端设置名称,然后显示客户端名称。如下:
127.0.0.1:6379> client setname my_client OK 127.0.0.1:6379> client getname "my_client"
下面列出了 redis 客户端基本命令。
关闭客户端连接。语法如下:
CLIENT KILL [ip:port] [ID client-id]
实例:
# 列出所有已连接客户端 127.0.0.1:6379> CLIENT LIST addr=127.0.0.1:43501 fd=5 age=10 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client # 杀死当前客户端的连接 127.0.0.1:6379> CLIENT KILL 127.0.0.1:43501 OK # 之前的连接已经被关闭,CLI 客户端又重新建立了连接 # 之前的端口是 43501 ,现在是 43504 127.0.0.1:6379> CLIENT LIST addr=127.0.0.1:43504 fd=5 age=0 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
获取连接到服务器的客户端连接列表。语法如下:
CLIENT LIST
注意,每个已连接客户端对应一行(以 LF 分割)。每行字符串由一系列 “属性=值” 形式的域组成,每个域之间以空格分开。以下是域的含义:
addr : 客户端的地址和端口
fd : 套接字所使用的文件描述符
age : 以秒计算的已连接时长
idle : 以秒计算的空闲时长
flags : 客户端 flag
db : 该客户端正在使用的数据库 ID
sub : 已订阅频道的数量
psub : 已订阅模式的数量
multi : 在事务中被执行的命令数量
qbuf : 查询缓冲区的长度(字节为单位, 0 表示没有分配查询缓冲区)
qbuf-free : 查询缓冲区剩余空间的长度(字节为单位, 0 表示没有剩余空间)
obl : 输出缓冲区的长度(字节为单位, 0 表示没有分配输出缓冲区)
oll : 输出列表包含的对象数量(当输出缓冲区没有剩余空间时,命令回复会以字符串对象的形式被入队到这个队列里)
omem : 输出缓冲区和输出列表占用的内存总量
events : 文件描述符事件
cmd : 最近一次执行的命令
客户端 flag 可以由以下部分组成:
O : 客户端是 MONITOR 模式下的附属节点(slave)
S : 客户端是一般模式下(normal)的附属节点
M : 客户端是主节点(master)
x : 客户端正在执行事务
b : 客户端正在等待阻塞事件
i : 客户端正在等待 VM I/O 操作(已废弃)
d : 一个受监视(watched)的键已被修改, EXEC 命令将失败
c : 在将回复完整地写出之后,关闭链接
u : 客户端未被阻塞(unblocked)
A : 尽可能快地关闭连接
N : 未设置任何 flag
文件描述符事件可以是:
r : 客户端套接字(在事件 loop 中)是可读的(readable)
w : 客户端套接字(在事件 loop 中)是可写的(writeable)
实例:
127.0.0.1:6379> CLIENT LIST addr=127.0.0.1:43143 fd=6 age=183 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client addr=127.0.0.1:43163 fd=5 age=35 idle=15 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping addr=127.0.0.1:43167 fd=7 age=24 idle=6 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=get
该命令用于返回 CLIENT SETNAME 命令为连接设置的名字。因为新创建的连接默认是没有名字的, 对于没有名字的连接, CLIENT GETNAME 返回空白回复。语法如下:
CLIENT GETNAME
实例:
127.0.0.1:6379> client getname (nil) 127.0.0.1:6379> client setname hello OK 127.0.0.1:6379> client getname "hello"
该命令用于指定当前连接的名称。这个名字会显示在 CLIENT LIST 命令的结果中, 用于识别当前正在与服务器进行连接的客户端。语法如下:
CLIENT SETNAME connection-name
实例:
127.0.0.1:6379> client setname hello OK 127.0.0.1:6379> client getname "hello"
该命令用于阻塞客户端命令一段时间(以毫秒计)。语法如下:
CLIENT PAUSE timeout
实例:
# 客户端阻塞 10 秒,10秒后才将 ping 请求发送到 redis 服务器 127.0.0.1:6379> client pause 10000 OK 127.0.0.1:6379> ping PONG (8.31s)