六、redis客户端

alt

alt

六、redis客户端

每个客户端对应一个redisClient结构,服务器状态redisServer结构中的clients属性是一个链表,保存了连接到该服务器的所有客户端,链表中的每一个元素都是一个redisClient结构;

属性

fd

记录客户端连接到服务器的套接字描述符,是一个大于等于-1的整数值;

-1表示伪客户端,用于处理AOF文件或LUA脚本中包含的redis命令;

name

记录客户端的名字,默认值为NULL,为某个客户端设置name属性让他的身份更清晰;

flags标识

记录客户端的状态或所处的角色

REDIS_MASTER

REDIS_SLAVE

REDIS_LUA_CLIENT

REDIS_FORCE_AOF

...

query_buf

输入缓冲区,客户端发送的命令请求会被保存到对应客户端的输入缓冲区;

输入缓冲区的大小随着输入内容动态的调整,最大不能超过1GB,否则服务器会关闭与客户端的连接;

argv

命令名称、命令参数。argv数组中的第一个元素表示命令名称,后面的所有元素表示命令所需的参数。

redis服务器分析输入缓冲区中的协议格式的命令请求,并将得到的命令名称、命令参数、命令参数个数分别保存到argv、argc属性中。

argc

命令参数个数。

cmd

命令实现函数。redis服务器根据argv数组中的第一个元素,到命令表中找到对应的命令实现函数。

cmd属性是一个指向redisCommand结构的指针,该结构中包含了命令实现函数、命令所需的参数、命令的表示、命令的总执行次数、总消耗时长等信息;

buf/reply

输出缓冲区。redis服务器处理命令请求并将得到的命令回复保存到输出缓冲区中;

buf是一个固定大小的输出缓冲区,用来保存长度较短的回复;

reply由一个链表和多个字符串对象组成,用来保存长度较长的回复;

使用两种模式限制输出缓冲区过大:

硬性限制:
如果输出缓冲区大小超过硬性限制,服务器立即关闭与客户端的连接;
软性限制:
如果输出缓冲区大小超过软性限制,但还没有超出硬性限制。redis服务器会记录下第一次到达软性限制大小的时间。并在之后持续的一段时间内监视输出缓冲区大小。如果在规定的时间内输出缓冲区大小下降到软性限制以下,则不做任何处理;如果在规定时间内输出缓冲区始终大于软性限制,服务器仍然会立即关闭与客户端的连接;

authenticated

身份验证,0表示未通过,1表示已通过。authenticated的取值只有在服务器开启了身份验证功能时才有意义。

ctime

创建客户端的时间,用来计算服务器与客户端之间的连接时长;

last_intersection_time

服务器与客户端之间最后一次互动的时间,用来计算客户端的空转时长;

obuf_soft_limit_reached_time

输出缓冲区大小第一次到达软性限制的时间,结合reply属性使用;

#redis客户端#
redis 文章被收录于专栏

redis20000字笔记(含思维导图版本-大纲版本)

全部评论

相关推荐

一表renzha:手写数字识别就是一个作业而已
点赞 评论 收藏
分享
06-07 17:17
嘉兴学院 教师
单单人旁的佳:你是我见过最美的牛客女孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务