1. 程式人生 > >Redis核心技術---流水線(pipelined)

Redis核心技術---流水線(pipelined)

什麼是流水線技術?

有時候我們需要批量執行一系列redis命令,這個時候如果一條一條的傳送給redis,由於網路通訊中的延遲,在redis接收到一條命令並且很快執行完後,就會出現等待下一條命令到達的空閒期,這會極大的影響redis的效能。

於是就有了pipelined技術,它可以將一系列命令存到佇列中並一次性發送給redis去批量執行,這樣就解決了由於網路通訊延遲導致redis不斷等待新命令到達的問題。

說到佇列,有了解redis事務管理的小夥伴就會想起redis也會把事務中的命令存到佇列中去批量執行,既然事務也可以實現批量執行,那為什麼還要pipelined技術呢?你要知道事務管理是有系統開銷的,有時候單純為了去批量執行一些命令去開啟事務是有點不划算的,所以說pipelined技術還是十分有必要的。

下面來對比使用pipelined前和使用後redis存入資料效能差別:

這個例子實現的是統計在1秒內能向redis中存入多少條資料 (示例需匯入jedis包)

 

上面兩張圖在控制檯分別打印出了1秒內redis執行命令的條數,可以看出對比已經非常明顯了,在不使用pipelined的時候僅為6381條,而使用pipelined時為238551條。