最近、redis のソース コードを読みました。現在、ネットワーク コードを勉強しています。
Redis は、ネットワーク データの読み取り/書き込みに非ブロック モードと epoll (または類似のもの) を使用します。データ読み込みイベントが到着すると、「readQueryFromClient」関数が呼び出され、この関数内でリクエストデータがバッファに読み込まれます。
「readQueryFromClient」関数では、実際にデータが到着した場合、1 つの「read」関数によってデータがバッファに読み込まれ、リクエストが処理されます。
nread = read(fd, c->querybuf+qblen, readlen); // **one read function**
//... some other codes to check read function retuen value
processInputBuffer(c);// **request will be handled in this function**
私の質問は次のとおりです: redis は、1 回の「読み取り」関数呼び出しだけですべての要求データをバッファーに読み込むことができるようにするにはどうすればよいですか?