redis命令詳解與使用情境舉例——Transaction(事務)

來源:互聯網
上載者:User
DISCARD

取消事務,放棄執行事務塊內的所有命令。
如果正在使用 WATCH 命令監視某個(或某些) key,那麼取消所有監視,等同於執行命令 UNWATCH 。
可用版本:
2.0.0+
時間複雜度:
O(1)。
傳回值:
總是返回 OK 。

redis> MULTIOKredis> PINGQUEUEDredis> SET greeting "hello"QUEUEDredis> DISCARDOK
EXEC

執行所有事務塊內的命令。
假如某個(或某些) key 正處於 WATCH 命令的監視之下,且事務塊中有和這個(或這些) key 相關的命令,那麼 EXEC 命令只在這個(或這些) key 沒有被其他命令所改動的情況下執行並生效,否則該事務被打斷(abort)。
可用版本:
1.2.0+
時間複雜度:
事務塊內所有命令的時間複雜度的總和。
傳回值:
事務塊內所有命令的傳回值,按命令執行的先後順序排列。
當操作被打斷時,返回空值 nil 。
事務被成功執行

redis> MULTIOKredis> INCR user_idQUEUEDredis> INCR user_idQUEUEDredis> INCR user_idQUEUEDredis> PINGQUEUEDredis> EXEC1) (integer) 12) (integer) 23) (integer) 34) PONG

監視 key ,且事務成功執行

redis> WATCH lock lock_timesOKredis> MULTIOKredis> SET lock "huangz"QUEUEDredis> INCR lock_timesQUEUEDredis> EXEC1) OK2) (integer) 1

監視 key ,且事務被打斷

redis> WATCH lock lock_timesOKredis> MULTIOKredis> SET lock "joe"        # 就在這時,另一個用戶端修改了 lock_times 的值,concurrentModifyedQUEUEDredis> INCR lock_timesQUEUEDredis> EXEC                  # 因為 lock_times 被修改, joe 的事務執行失敗(nil)
MULTI

標記一個事務塊的開始。
事務塊內的多條命令會按照先後順序被放進一個隊列當中,最後由 EXEC 命令原子性(atomic)地執行。
可用版本:
1.2.0+
時間複雜度:
O(1)。
傳回值:
總是返回 OK 。

redis> MULTI            # 標記事務開始OKredis> INCR user_id     # 多條命令按順序入隊QUEUEDredis> INCR user_idQUEUEDredis> INCR user_idQUEUEDredis> PINGQUEUEDredis> EXEC             # 執行1) (integer) 12) (integer) 23) (integer) 34) PONG
UNWATCH

取消 WATCH 命令對所有 key 的監視。
如果在執行 WATCH 命令之後, EXEC 命令或 DISCARD 命令先被執行了的話,那麼就不需要再執行 UNWATCH 了。
因為 EXEC 命令會執行事務,因此 WATCH 命令的效果已經產生了;而 DISCARD 命令在取消事務的同時也會取消所有對 key 的監視,因此這兩個命令執行之後,就沒有必要執行 UNWATCH 了。
可用版本:
2.2.0+
時間複雜度:
O(1)
傳回值:
總是 OK 。

redis> WATCH lock lock_timesOKredis> UNWATCHOK
WATCH key [key …]

監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那麼事務將被打斷。
可用版本:
2.2.0+
時間複雜度:
O(1)。
傳回值:
總是返回 OK 。
redis> WATCH lock lock_times
OK

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.