Redis 客户端连接服务器完整的流程
redis sever 启动时,会把 AE_READABLE
事件关联至 acceptTcpHandler
方法,向eventLoop注册。
当client连接server时,会触发redis sever的AE_READABLE事件为就绪状态。
当AE_READABLE事件为就绪态时,会在aeMain中对其进行处理,并执行绑定的acceptTcpHandler方法。在acceptTcpHandler方法中,会创建client实例,并将client的AE_READABLE事件和readQueryFromClient方法绑定,向eventLoop注册。
client向server发送命令,触发client的AE_READABLE事件变为就绪态。
在aeMain中对AE_READABLE变为就绪状态的事件进行处理。执行绑定的readQueryFromClient方法,并执行相应的命令。在命令执行过后准备发送结果给client之前,会把client的AE_WRITEABLE事件和sendReplyToClient方法绑定, 向eventLoop注册,同时发送命令,触发AE_WRITEABLE事件。
在aeMain中对AE_WRITEABLE的事件进行处理,执行绑定的sendReplyToClient方法,把命令发送给client,同时删除向eventLoop注册的AE_WRITEABLE事件。