天天看點

Redis(五):Redis事務

文章目錄

    • multi 、 exec 、 discard 、watch
    • Redis使用方法
    • Redis不支援復原

Redis事務:是一些列redis指令的集合,在一次單獨的步驟中執行一組指令,Redis會将一個事務中的所有指令序列化,然後按順序執行。

multi 、 exec 、 discard 、watch

  1. MULTI

    multi用于标記一個事務塊的開始,Redis會将後續的指令逐個放入隊列中,然後才能使用EXEC指令原子化地執行這個指令序列。

  2. EXEC

    exec執行所有事務塊内的指令, 在一個事務中執行所有先前放入隊列的指令,然後恢複正常的連接配接狀态。

  3. DISCARD

    discard清除所有先前在一個事務中放入隊列的指令,然後恢複正常的連接配接狀态。

    如果使用了WATCH指令,那麼DISCARD指令就會将目前連接配接監控的所有鍵取消監控。

  4. WATCH

    watch當某個事務需要按條件執行時,就要使用這個指令将給定的鍵設定為受監控的。

    WATCH key [key …]

  5. UNWATCH

    unwatch清除所有先前為一個事務監控的鍵。

    如果調用了EXEC或DISCARD指令,那麼就不需要手動調用UNWATCH指令。

Redis使用方法

使用MULTI指令便可以進入一個Redis事務。這個指令的傳回值總是OK。此時,使用者可以發出多個Redis指令。Redis會将這些指令放入隊列,而不是執行這些指令。一旦調用EXEC指令,那麼Redis就會執行事務中的所有指令。相反,調用DISCARD指令将會清除事務隊列,然後退出事務。

EXEC指令的傳回值是一個數組,包含事務中每個指令的執行結果,且響應的順序和指令發出時的順序一樣。

  • 事務中的所有指令都是序列化且都是按順序執行的。
  • 所有的指令要麼都被一起處理,要麼全都沒有被處理,是以Redis事務是原子的。

Redis不支援復原

Redis指令在事務中可能會執行失敗,但是Redis事務不會復原,而是繼續會執行餘下的指令。

— The end —

繼續閱讀