Redis-0x1D-网络通信connection
网络通信的底层是套接字的使用,根据网络类型可以分为
- 网络套接字
- 表示本地(Unix域)套接字
虽然redis已经对系统的套接字api进行了一次封装Redis-0x10-socket编程,但是直接操作socket还是偏低层,因此在此基础上,封装出connection给业务模块使用
1 网络连接的接口定义
1 |
|
2 接口实现
根据加密需求对接口提供了两种实现
- TCP的CT_Socket 基于unix socket的连接也是归于这种
- TLS TCP的CT_TLS
2.1 CT_Socket
1 |
|
2.2 CT_Socket
1 |
|
3 通信流程
3.1 服务端等待客户端连接
服务端知名端口6379等待客户端连接请求过来,当有客户端连接请求过来到服务端时触发回调acceptTcpHandler
1 |
|
3.2 客户端连接请求
当服务端收到客户端连接请求时,服务端调用accept
系统调用fork出来新的socket,并封装成connection等待接收客户端发送的数据
1 |
|
核心流程是acceptCommonHandler->createClient->connSetReadHandler,完成在逻辑层面的客户端/服务端连接,此时服务端就等待客户端的请求数据,进行对应的指令处理,即createClient中调用connSetReadHandler时指定的回调函数
1 |
|
3.3 服务端接收客户端请求指令进行处理
1 |
|
Redis-0x1D-网络通信connection
https://bannirui.github.io/2024/06/17/Redis/Redis-0x1D-网络通信connection/