Redis學習之事務九

2021-10-01 03:41:19 字數 776 閱讀 7475

1.可以一次執行多個命令,本質就是一組命令的集合。乙個事務中的所有命令都會序列化,按順序地序列化執行而不會被其他命令插入,不許加塞。

開啟事務執行

multi
執行事務完成佇列中命令的執行

exec
什麼是樂觀鎖?

樂觀鎖:每次去那資料的時候都認為別人不會修改資料,所以不會上鎖,但是在更新的時候會去判斷一下在此期間別人有沒有去更新這個資料,可以使用版本號等機制。樂觀鎖適用於多去的使用型別,這樣可以提交吞吐量。

樂觀鎖策略:提交版本必須大於記錄當前版本才能執行更新。

更改資料之前,先加watch,然後再開啟事務,如果在開啟事務後,有人修改了資料,此時事務執行會失敗。

需要先執行unwatch,然後再執行事務操作。(類似樂觀鎖)

2.事務的三個階段:

開啟:以multi開啟乙個事務

入隊:將多個命令入隊到事務中,降到這些命令不會立即執行,而是放到等待執行的事務佇列裡面

執行:由exec命令觸發事務。

3.事務的三個特性:

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

沒有隔離級別的概念:佇列中的命令沒有提交之前不會實際的被執行,因為事務提交前任何指令都不會被實際操作,,也就不存在『事務內的查詢要看到事務裡的更新,在事務外查詢不能看到』這個讓人萬分頭疼的問題

不保證原子性:redis同乙個事務中如果有一條命令執行失敗,其後的命令仍然會被執行,沒有回滾

Redis之事務案例

一次執行多個命令,本質是一組命令的集合。乙個事務中的所有命令都會序列化,按順序地序列化執行而不會被其它命令插入,不許加塞。乙個佇列中,一次性 順序性 排他性的執行一系列命令。單獨的隔離操作 事務中的所有命令都會序列化 按順序地執行。事務在執行的過程中,不會被其他客戶端傳送來的命令請求所打斷 沒有隔離...

redis高階之事務

事務簡介 超市的收銀員在盤賬,一天下來收了一些零錢,然後乙個乙個數,在數的過程中來了乙個兒童,這個兒童唱了一首歌 門前大橋下游過一群鴨,快來快來數一數二十六七八。然後這個收銀員一臉難色地把數好的錢又放了回去。這裡收銀員在做連續的動作 數錢 時被打斷了,或者被影響到了,那麼數錢的結果肯定是不正確的。怎...

Redis高階 之 事務

redis事務就是乙個命令執行的佇列,將一系列預定義命令包裝成乙個整體 乙個佇列 當執行時,一次性按照新增順序依次執行,中間不會被打斷或者干擾.乙個佇列中,一次性 順序性 排他性的執行一系列命令 1.事務的基本操作 定義,執行,取消 multiexec注意 加入事務的命令暫時進入到任務佇列中,並沒有...