一、Pipeline概述
Redis客戶端執行一條命令分為如下四個過程:
1.發送命令
2.命令排隊
3.命令執行
4.返回結果
其中1+4稱為Round Trip Time(RTT,往返時間)
Pipeline概述
Redis提供了批量操作命令(例如mget、mset等),有效地節約RTT。但大部分命令是不支持批量操作的,例如要執行n次hgetall命令,并沒有 mhgetall命令存在,需要消耗n次RTT。Redis的客戶端和服務端可能部署在不 同的機器上。例如客戶端在北京,Redis服務端在上海,兩地直線距離約為 1300公里,那么1次RTT時間=1300×2/(300000×2/3)=13毫秒(光在真空中 傳輸速度為每秒30萬公里,這里假設光纖為光速的2/3),那么客戶端在1秒內大約只能執行80次左右的命令,這個和Redis的高并發高吞吐特性背道而 馳
Pipeline(流水線)機制能改善上面這類問題,它能將一組Redis命令進行組裝,通過一次RTT傳輸給Redis,再將這組Redis命令的執行結果按順序返回給客戶端
下圖為沒有使用Pipeline執行了n條命令,整個過程需要n次 RTT