1. 程式人生 > 其它 >redis事務(樂觀鎖,悲觀鎖)

redis事務(樂觀鎖,悲觀鎖)

Redis事務是一個單獨的隔離操作:事務中的所有命令都會序列化、按順序地執行。事務在執行的過程中,不會被其他客戶端傳送來的命令請求所打斷

Redis事務的主要作用就是串聯多個命令防止別的命令插隊

Redis事務三特性

  • 單獨的隔離操作

事務中的所有命令都會序列化、按順序地執行。事務在執行的過程中,不會被其他客戶端傳送來的命令請求所打斷。

  • 沒有隔離級別的概念

佇列中的命令沒有提交之前都不會實際被執行,因為事務提交前任何指令都不會被實際執行

  • 不保證原子性

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

開啟事務

multi

組隊階段可以新增redis語句

set k1 v1

set k1 v2

set k2 v1

執行事務(依次執行redis語句)

exex

刪除事務

discard

報錯情況有兩種

【組隊階段】某個命令出現了報告錯誤,執行時整個的所有佇列都會被取消。

如果【執行階段】某個命令報出了錯誤,則只有報錯的命令不會被執行,而其他的命令都會執行,不會回滾。

悲觀鎖通過鎖住資源,一個個挨著操作,避免發生執行緒安全問題(上鎖解鎖執行慢)

樂觀鎖(redis的事務會使用該鎖)(不會上鎖)通過在更新時會對比執行緒中的版本號與資料庫版本號,相同才接著執行,不同就不運行了,避免發生執行緒安全問題(適用於多讀的情況)