-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathredis_event.brief
More file actions
61 lines (53 loc) · 2.11 KB
/
redis_event.brief
File metadata and controls
61 lines (53 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
本文档简要摘录redis的事件处理模型, 以期了解redis的串行化, 及
高效率模型.
初始化流程
----------
--main() src/server.c
--initServer()
--aeCreateEventLoop() src/ae.c
--aeApiCreate() src/ae_epoll.c
--epoll_create()
--listenToPort() src/server.c
--anetTcp6Server()
--anetTcpServer() src/anet.c
--_anetTcpServer()
--socket()
--anetSetReuseAddr()
--setsockopt()
--anetListen()
--bind()
--listen()
--anetNonBlock()
--...
--aeCreateFileEvent() src/ae.c
--aeApiAddEvent() 读事件, acceptTcpHandler()
--epoll_ctl() 处理tcp插口的accept事件
--...
--aeSetBeforeSleepProc() src/server.c
--aeMain()
--beforeSleep()
--aeProcessEvents() src/ae.c
--aeApiPoll()
--epoll_wait()
--aeFileEvent->rfileProc/wfileProc()
--processTimeEvents()
--aeTimeEvent->timeProc()
--aeDeleteEventLoop()
acceptTcpHandler()
------------------
此函数用于接收客户端的连接请求
--anetTcpAccept() src/anet.c
--anetGenericAccept()
--accept()
--acceptCommonHandler()
--createClient() src/networking.c
--aeCreateFileEvent() 注册客户端请求事件,
--aeApiAddEvent() readQueryFromClient()
--selectDb(, 0)
--...
--initClientMultiState() src/multi.c
readQueryFromClient()
---------------------
此函数用于接收已连接客户端的请求指令, 参考redis_command.brief
--read()
--processInputBuffer()