Dive Deep Redis Internals ~ GETコマンド実行時の動作 ~
GETコマンド実行時の挙動
1. クライアントから送られてきたリクエストを処理してClient Output Bufferに保存する処理
2. Client Output Bufferに保存されたリプライ内容をクライアントへ送る処理概要
0. main関数からaeMain関数までの処理
1. クライアントから送られてきたリクエストを処理してClient Output Bufferに保存する処理
2. Client Output Bufferに保存されたリプライ内容をクライアントへ送る処理
詳細
クライアントから送られてきたリクエストを処理してClient Output Bufferに保存する処理
0 aeMain at ae.c
1 aeProcessEvents at ae.c
2 aeSearchNearestTimer at ae.c
1 aeProcessEvents at ae.c
2 aeApiPoll at ae.c
1 aeProcessEvents at ae.c
2 afterSleep at server.c
1 aeProcessEvents at ae.c
2 rfileProc -> readQueryFromClient at networking.c
3 processInputBuffer at networking.c
4 processMultibulkBuffer at networking.c
5 createStringObject at object.c
6 createEmbeddedStringObject at object.c
4 processMultibulkBuffer at networking.c
5 createStringObject at object.c
4 processMultibulkBuffer at networking.c
3 processInputBuffer at networking.c
4 processCommand at server.c
5 lookupCommand at server.c
6 dictFetchValue at dict.c
7 dictFind at dict.c
8 dictHashKey -> dictSdsCaseHash at server.c
4 processCommand at server.c
5 call at server.c
6 proc -> getCommand at t_string.c
7 getGenericCommand at t_string.c
8 lookupKeyReadOrReply at db.c
9 lookupKeyRead at db.c
10 lookupKeyReadWithFlags at db.c
8 addReplyBulk at networking.c
5 call at server.c
4 processCommand at server.c
3 processInputBuffer at networking.c
4 resetClient at networking.c
1 aeProcessEvents
2 processTimeEvents at ae.c
Client Output Bufferに保存されたリプライ内容をクライアントへ送る処理
0 aeMain at ae.c
1 beforeSleep at server.c
2 activeExpireCycle at expire.c
2 moduleHandleBlockedClients at module.c
2 flushAppendOnlyFile at aof.c
2 handleClientsWithPendingWrites at networking.c
3 writeToClient at networking.c
4 clientHasPendingReplies at networking.c
事前準備
Redis
Docker
cgdb
gdb
Last updated