redis客户端🥇

243 阅读2分钟

这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战

redis客户端🥇

redis服务器是一对对服务器程序:一个服务器可以与多个客户端建立网络连接,每个客户端可以向服务器发送命令请求。通过使用io多路复用技术实现文件事件处理器,redis服务器使用单线程单进程处理命令请求,与多个客户端进行网络通信。

reids服务器的结构中的clients属性是一个链表,保存着所有与服务器连接的客户端的状态结构,对客户端执行批量操作,或者查找某个指定的客户端,都可以通过遍历clients链表来完成。

客户端属性

套接字描述符

客户端结构的fd属性记录着客户端正在使用的套接字描述符,根据客户端类型不同,fd的值不同

伪客户端fd为-1,伪客户端的请求命令来源于AOF文件或者Lua脚本,这种客户端不需要套接字连接,也不需要记录套接字描述符。redis服务器在两个地方用到了伪客户端:载入AOF文件并还原数据库状态,另一个是用于执行lua脚本包含的redis命令。

普通客户端fd属性值大于-1,fd记录与服务器进行通信的套接字的描述符

名字

默认情况,连接服务器的客户端没有名字,可以通过client setname命令设置名字

redisclient结构中的name属性记录着名字

标志

客户端标志属性flags记录客户端的角色和客户端目前的状态

输入缓冲区

客户端状态的输入缓冲区querybuf用于保存客户端发送的命令请求,输入缓冲区的大小会根据输入内容动态缩小或夸大,当最大不超过1GB,否则服务器将关闭这个客户端。

这是redis客户端属性的一部分,下篇文章中我们继续讲解redis客户端的一些功能和属性。