1. 程式人生 > >Redis- 管道(Pipeline)

Redis- 管道(Pipeline)

下面主要總結Redis關於管道的一些內容:

1、客戶端對Redis進行一次操作,客戶端將請求送給服務端,服務端處理完成後,將響應再回復給客戶的,要花費一個網路資料包來回的時間

2、如果是多條指令,如下圖:

 上面圖經歷了讀->寫->讀->寫,四個操作,執行了2條命令

調整讀寫的順序 寫->寫->讀->讀同樣能達到效果,單隻需要執行1條命令,這便是管道操作的本質,改變管道中讀寫指令的順序就可以大幅節省IO時間

3、深入瞭解管道

下圖為一個請求的互動流程圖:

1)客戶端程序呼叫write將訊息寫到作業系統核心為套接字分配的傳送緩衝send buffer。 

2)客戶端作業系統核心將傳送緩衝的內容傳送到網絡卡,網絡卡硬體將資料通過「網際路由」送到伺服器的網絡卡。

3) 伺服器作業系統核心將網絡卡的資料放到核心為套接字分配的接收緩衝recv buffer。

 4)伺服器程序呼叫read從接收緩衝中取出訊息進行處理。

5) 伺服器程序呼叫write將響應訊息寫到核心為套接字分配的傳送緩衝send buffer。

6) 伺服器作業系統核心將傳送緩衝的內容傳送到網絡卡,網絡卡硬體將資料通過「網際路由」送到客戶端的網絡卡。

7) 客戶端作業系統核心將網絡卡的資料放到核心為套接字分配的接收緩衝recv buffer。

8) 客戶端程序呼叫read從接收緩衝中取出訊息返回給上層業務邏輯進行處理。

9) 結束。

4、pipeline通過減少客戶端與redis的通訊次數來實現降低往返延時時間,而且Pipeline 實現的原理是佇列,是可以把多條指令放入到一個tcp報文一起傳送,server則將三條命令的處理結果放到一個tcp報文返回。