redis服务器是典型的一对多服务器程序
一个服务器处理多个客户端
使用I/O多路复用技术实现的文件事件处理器,redis服务器采用单线程单进程处理命令请求,并与多个客户端进行网络通信。
1.redisserver有list* clients保存客户端状态
套接字描述 fd=-1或者大于-1 (1)伪客户端的fd属性的值可以是-1(请求来源AOF文件或者Lua脚本执行redis命令)
一般客户端的套接字是ip地址加上端口号
2.名字
3.标志
4.输入缓冲区:暂时保存在客户端输入命令!,可以根据实际内容扩大缩小,但它的大小不能超过1G,否则关闭
5.输出缓冲区:
- 大小固定的缓冲区buf(int bufpos未使用)
- 可动态扩展缓冲区reply 首先使用buf 然后使用reply
6。argv保存命令和参数
argc数组
7.身份验证标记
8.客户端的创建和关闭
- 创建 客户端通过网络连接,服务器调用链接事件处理器,微客户端创建相对应的键空间状态,然后压入服务器状态中。
关闭:
- 客户端正常关闭
- 空转时间超长
- 发送不符合协议的请求
- 输入输出缓存溢出