Redis 客户端

Redis 客户端命令主要是用于管理 redis 客户端。

实例

下面演示给客户端设置名称,然后显示客户端名称。如下:

127.0.0.1:6379> client setname my_client
OK
127.0.0.1:6379> client getname
"my_client"

Redis 客户端命令

下面列出了 redis 客户端基本命令。

CLIENT KILL命令

关闭客户端连接。语法如下:

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命令

获取连接到服务器的客户端连接列表。语法如下:

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 GETNAME命令

该命令用于返回 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 SETNAME命令

该命令用于指定当前连接的名称。这个名字会显示在 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命令

该命令用于阻塞客户端命令一段时间(以毫秒计)。语法如下:

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)
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号