Redis接受上配置监听TCP端口和Unix套接字客户端的连接,如果启用。当一个新的客户端连接被接受,如有以下操作进行:
客户端套接字置于非阻塞状态,因为Redis的使用复用和非阻塞I/O操作。
TCP_NODELAY选项设定是为了以确保我们没有连接延迟。
创建一个可读的文件时,这样Redis能够尽快收集客户端的查询作为新的数据可供读取的Socket中。
客户端的最大数量
Redis配置(redis.conf)属性调用MaxClients,它描述客户端可以连接到Redis的最大数量。命令的基本语法是:
在下面给出的例子中,我们设置客户端的最大数为10万,当启动服务器
[b]客户端命令[/b]
S.N. 命令 描述
1 CLIENT LIST 返回客户端的列表连接到Redis服务器
2 CLIENT SETNAME 指定名称的当前连接
3 CLIENT GETNAME 返回由CLIENT SETNAME设置当前连接的名称。
4 CLIENT PAUSE 这是一个连接控制命令可以暂停所有Redis客户指定的时间量(以毫秒为单位)。
5 CLIENT KILL 该命令关闭特定的客户端连接。
可用版本
>= 2.4.0
返回值
命令返回多行字符串,这些字符串按以下形式被格式化:
每个已连接客户端对应一行(以 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)
客户端套接字置于非阻塞状态,因为Redis的使用复用和非阻塞I/O操作。
TCP_NODELAY选项设定是为了以确保我们没有连接延迟。
创建一个可读的文件时,这样Redis能够尽快收集客户端的查询作为新的数据可供读取的Socket中。
客户端的最大数量
Redis配置(redis.conf)属性调用MaxClients,它描述客户端可以连接到Redis的最大数量。命令的基本语法是:
config get maxclients
1) "maxclients"
2) "10000"
在下面给出的例子中,我们设置客户端的最大数为10万,当启动服务器
redis-server --maxclients 100000
[b]客户端命令[/b]
S.N. 命令 描述
1 CLIENT LIST 返回客户端的列表连接到Redis服务器
2 CLIENT SETNAME 指定名称的当前连接
3 CLIENT GETNAME 返回由CLIENT SETNAME设置当前连接的名称。
4 CLIENT PAUSE 这是一个连接控制命令可以暂停所有Redis客户指定的时间量(以毫秒为单位)。
5 CLIENT KILL 该命令关闭特定的客户端连接。
#Redis Client List 命令用于返回所有连接到服务器的客户端信息和统计数据
127.0.0.1:6379> CLIENT LIST
id=8253 addr=127.0.0.1:53899 fd=5 name= age=9 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
#Redis CLIENT SETNAME命令指定一个名称到当前连接。
127.0.0.1:6379> CLIENT SETNAME "myconnection"
OK
可用版本
>= 2.4.0
返回值
命令返回多行字符串,这些字符串按以下形式被格式化:
每个已连接客户端对应一行(以 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)