曾經被面試官問,redis中pipline和multi的區別,那是我不清楚,本着覆盤的心,查了些資料,並自己動手實驗
總結如下
- pipeline選擇客戶端緩衝,multi選擇服務端緩衝;
- 請求次數的不一致,multi需要每個命令都發送一次給服務端,pipeline最後一次性發送給服務端,請求次數相對於multi減少
- multi/exec可以保證原子性,而pipeline不保證原子性(redis的原子性不等同於數據庫的原子性)
如果redis,這開啓事務後,命令入隊能在檢查時就知道這是個有問題的命令,那此時可以保證原子性
如果是要等到運行時才能判斷出是不可執行命令,這redis會跳過此命令,執行後面的命令。切記!切記!