《Redis设计与实现》第十三章 客户端

通过使用io多路复用技术实现的文件处理器,redis单线程单进程的方式来处理命令请求,并与多个客户端进行网络通信。
每个客户端都有一个redisClient结构,保存当前客户端消息。

-w715
-w609

13.1 客户端属性

通用属性与特定功能属性。

13.1.1 套接字描述符

-w452
伪客户端fd为-1.

13.1.2 名字

在默认情况下,一个连接到服务器的客户端是没有名字的。
使用client setname设置名字。
-w309

13.1.3 标志

-w327
记录角色以及所处状态
-w522

13.1.4 输入缓冲区

-w729
最大不能超过1GB否则会关闭
保存客户端发送的命令请求

13.1.5 命令与命令参数

-w720

13.1.6 命令的实现函数

-w692

13.1.7 输出缓冲区

服务端回复的结果保存在此处
-w376

13.1.8 身份验证

-w717

13.1.9 时间

-w780

13.2 客户端的创建与关闭

-w683

13.2.2 关闭普通客户端

-w707

13.2.3 Lua脚本的伪客户端

-w758

13.2.4 AOF文件的伪客户端

-w720

13.3 重点回顾

  • 服务器状态结构使用clients链表连接多个客户端状态,新添加的客户端状态会被放到链表末尾。
  • flags属性使用不同标志来表明客户端的角色以及所处状态(阻塞、读取、等待回复等等)
  • 输入缓冲区记录了客户端发送的命令请求、最大1GB
  • 命令的参数和参数个数会被记录argv和argc里面。
  • 固定大小缓冲区16KB最大和可变大小缓冲区
  • 输出缓冲区有两种 一个是超出了硬性限制 like关闭,如果在一段时间内也超过软性限制 也被关闭。
  • 当客户端连接上服务器时,会创建相应客户端。
  • 处理Lua脚本
  • 载入AOF时会创建伪客户端(走套接字)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章