上一節我們 redis 執行命令的生命週期大概爲:
- 發送命令 (客戶端發送)
- 排隊 (服務端排隊)
- 執行命令 (服務端執行)
- 返回結果 (服務端返回)
我們知道服務端每秒可執行上萬條命令,執行一條命命令是微妙級別的,客戶端發送一條命令,需要在網絡中進行傳輸,網絡是不穩定的,這個傳輸時間是很長的,可見網絡傳輸對redis 的性能是有一定影響的。
n 條命令所花費的時間爲: n 次網絡傳輸時間 + n次服務器處理時間
pipeline(流水線):客戶端批量發送命令,此時處理n 條命令所花費的時間爲1次網絡傳輸時間+ n次服務器處理時間
- 注意每次pipeline 攜帶數量
- pipeline 每次只能作用在一個redis 節點上
M 操作與 pipeline 的區別
原生的 M操作具有原子性(MSET 、HMSET 命令等)
pipeline 操作 是非原子性的,但能保證執行順序。