什麼是事務
Redis執行指令過程中,多條連續執行的指令被幹擾,打斷,插隊
redis事務就是一個指令執行的隊列,将一系列預定義指令包裝成一個整體(一個隊列)。當執行時,一次性 按照添加順序依次執行,中間不會被打斷或者幹擾。
一個隊列中,一次性、順序性、排他性的執行一系列指令
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SMwMzMwUmNhdzM1ITZjRDZxUGNxEmYjNjY1ITNkVzNk9CX3AzLclDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL5M3Lc9CX6MHc0RHaiojIsJye.png)
事務的基本操作
開啟事務
multi
作用:設定事務的開啟位置,此指令執行後,後續的所有指令均加入到事務中
執行事務
exec
作用:設定事務的結束位置,同時執行事務。與multi成對出現,成對使用
注意:加入事務的指令暫時進入到任務隊列中,并沒有立即執行,隻有執行exec指令才開始執行
取消事務
discard
作用:終止目前事務的定義,發生在multi之後,exec之前
事務的注意事項
定義事務的過程中,指令格式輸入錯誤怎麼辦?
文法錯誤:指指令書寫格式有誤
處理結果:如果定義的事務中所包含的指令存在文法錯誤,整體事務中所有指令均不會執行。包括那些文法正确的指令。
定義事務的過程中,指令執行出現錯誤怎麼辦?
運作錯誤:指指令格式正确,但是無法正确的執行。例如對list進行incr操作
處理結果:能夠正确運作的指令會執行,運作錯誤的指令不會被執行
注意;已經執行完畢的指令對應的資料不會自動復原,需要程式員自己在代碼中實作復原
手動進行事務復原
- 單資料:string
- 多資料:hash、list、set、zset
- 單資料:直接set(注意周邊屬性,例如時效)
- 多資料:修改對應值或整體克隆複制