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

本文深入探讨Redis如何通过单线程单进程模型处理多客户端请求,解析客户端属性如套接字描述符、输入输出缓冲区及命令参数的管理,同时讲解了客户端的创建与关闭流程,以及特殊伪客户端用于Lua脚本执行与AOF文件加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过使用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时会创建伪客户端(走套接字)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值