pipeline 簡介 « 關於網路那些事...
阿新 • • 發佈:2018-12-29
Redis - pipeline 簡介
Redis client 每次傳送一筆 command 都會經過 傳送命令> 命令列隊(排隊)> 執行 > 返回結果 ,這期間所需要的時間,就稱為RTT(Round Trip Time, 往返時間)
Redis 通常可以執行在微秒等級,但是在不同網路環境,就會因網路本身的傳輸限制而有所差異,因此才有Redis 效能瓶頸就是網路 一說
pipeline 可以將多筆資料同時發送出去,
如果不使用 pipelining,每一個command 從訪問資料結構、取得回覆,看起來耗費的流量都非常小,
但對於 socket I/O 而言,每個訪問都執行一次comman,佔用的效能成本就相當大
當使用 pipelining,可以將多個指令組成一次發送出去,讓系統只需讀取一次 read(),並且將多個回覆內容也組成一次輸出 write()
雖然 pipeline 可以減少 RTT,減少IO呼叫次數
但是直接傳送 command 只需要 Redis server 端處理,
透過 pipeline 則需要 server 端-client端 共同實現
因此仍須注意 pipeline 大小,是否會超過 Client端的快取限制,若超過則快取重新整理或直接傳送,可能會發生無法預期的問題
通常對於過大的 pipeline ,可以透過拆分來完成減少單次大小
Pipeline 代理
通常為了讓Redis可以有更好的負載能力,都會在 Redis 前面外加一個代理,例如: Codis Pipeline 快取預設10K,3.1則是1024,Jedis 快取預設為 8192
如果你喜歡我們的文章內容,請在這裡按個讚