redis-18.事物

aliyeye發表於2021-02-23

什麼是事務

:question:Redis執行指令過程中,多條連續執行的指令被干擾,打斷,插隊

redis事務就是一個命令執行的佇列,將一系列預定義命令包裝成一個整體(一個佇列)。當執行時,一次性按照新增順序依次執行,中間不會被打斷或者干擾。
一個佇列中,一次性、順序性、排他性的執行一系列命令
oiW8UF66Tz.png!large

事務的基本操作

  • 開啟事務

    multi
  • 作用
    設定事務的開啟位置,此指令執行後,後續的所有指令均加入到事務中

  • 執行事務

    exec
  • 作用
    設定事務的結束位置,同時執行事務。與multi成對出現,成對使用

注意:加入事務的命令暫時進入到任務佇列中,並沒有立即執行,只有執行exec命令才開始執行

:question:事務定義過程中發現出了問題,怎麼辦?

  • 取消事務

    discard
  • 作用
    終止當前事務的定義,發生在multi之後,exec之前

事務的工作流程

59KJ0PPdUg.png!large

:question:定義事務的過程中,命令格式輸入錯誤怎麼辦?

  • 語法錯誤
    指命令書寫格式錯誤

  • 處理結果
    如果定義的事務中所包含的命令存在語法錯誤,整體事務所有命令均不會執行。包括哪些語法正確的命令

:question:定義事務的過程中,命令執行出現錯誤怎麼辦?

  • 執行錯誤
    指命令格式正確,但是無法正確的執行。例如對list進行incr操作

  • 處理結果
    能夠正確的命令會執行,執行錯誤的命令不會被執行

注意:已經執行完畢的命令對應的資料不會自動回滾,需要程式設計師自己在程式碼中實現回滾。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章