首頁 >資料庫 >Redis >什麼是Redis事務

什麼是Redis事務

hzc
hzc原創
2020-06-28 14:31:082701瀏覽

Redis事務是可以一次執行多條命令,本質上是一組命令的集合,一個事務中的所有命令都會序列化,然後按順序地串行化執行,而不會被插入其他命令。

什麼是Redis事務

一、什麼是redis事務?

  可以一次執行多條指令,本質上就是一組指令的集合。一個事務中的所有命令都會序列化,然後按順序地串行化執行,而不會被插入其他命令

二、Redis 事務可以做什麼?

  一個佇列中,一些性,順序性,排他性的執行一系列的指令

##三、怎麼使用 redis 指令?

  1、事務相關的命令:

    (1)DISCARD:取消事務,放棄執行事務區塊中的所有命令

    (2)EXEC:執行交易區塊中的指令

    (3)MULTI:標記一個交易的開始

    (4)UNWATCH:取消WATCH指令對所有key 的監控##.

 」  (5) key [key...]:監視一個(或多個)key,如果在事務之前執行這個(或這些)key被其他指令所改動,那麼事務將會被打斷。

  2、交易報錯問題:

    (1)語句錯誤:會直接在新增佇列的時候報錯,如果出現這個錯誤,則整個事務都會回滾

(2)邏輯錯誤:例如給一個字串1,在執行的時候才會報錯。這種錯誤則不會影響事務中的其他操作,只有本條會報錯

  3、watch 監控:

    (1)樂觀鎖:


      鎖 是一個樂觀的鎖,每次去拿數的時候都認為別人不會對數據進行修改,所以不會上鎖,但是在更新的時候會判斷一下在此期間別人有沒有去更新這個數據,可以使用「版本號」等機制,樂觀所使用於多讀取的應用類型,這樣可以提高吞吐量。

      樂觀所策略:提交版本必須大於當前記錄的版本,才可以進行更新

    (2)悲觀鎖

##   鎖  (2)悲觀鎖

##  悲觀的鎖,每次去拿數據的時候會認為其它人會根據修改操作,導致覆蓋等問題。所以每次在拿數據的時候都會上鎖,這樣如果別人想要拿數據,就會block ,一直到修改完之後,解開鎖菜可以使用,傳統的關係醒數據庫裡邊就用了很多這種鎖的機制,例如行鎖,表鎖,讀鎖,寫鎖,這都是在做操作之前,先對錶上鎖。

      悲觀鎖定保證資料安全,但是會使效能下降

四、三特性

  1、單獨的隔離操作:

#    事務中的所有指令都會序列化、依序執行。事務執行過程中,不會被其他客戶端發送來的命令請求打斷。

  2、沒有隔離等級的概念:

    佇列中的命令沒有提交之前不會實際的被執行,因為事務提交前任何指令都不會被實際執行,也就不存在「事務內的查詢要看到是物理的更新,在事務外查詢不能看到這個問題了」

  3、不保證原子性:

    redis 同一個事務中如果有一條命令執行失敗,其後的命令仍然會被執行,沒有回滾。

    (除非加入佇列的時候就出錯,即類似java 的編譯時異常和執行時一異常,編譯時會導致回滾,執行時異常不回滾)

推薦教程: 《

Redis教學

》 

以上是什麼是Redis事務的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn