redis高階之事務

2021-10-07 05:00:49 字數 1854 閱讀 5117

事務簡介

超市的收銀員在盤賬,一天下來收了一些零錢,然後乙個乙個數,在數的過程中來了乙個兒童,這個兒童唱了一首歌:門前大橋下游過一群鴨,快來快來數一數二十六七八。然後這個收銀員一臉難色地把數好的錢又放了回去。這裡收銀員在做連續的動作(數錢)時被打斷了,或者被影響到了,那麼數錢的結果肯定是不正確的。怎麼解決這個問題,我們給她乙個安靜的環境讓她數錢。

什麼是事務

redis執行指令過程中,多條連續執行的指令被干擾,打斷,插隊。

reids事務就是乙個命令執行的佇列,將一系列預定義命令包裝成乙個整體(乙個佇列),當執行時,一次性按照新增順序依次執行,中間不會被打斷或者干擾。

乙個佇列中,一次性、順序性、排他性的執行一系列命令

事務基本操作

事務的邊界

比如蘋果新出了乙個產品,排隊購買的人成千上萬,但是有乙個組合一起排隊,茫茫人海中我們怎麼區分他們從哪乙個開始,哪乙個結束呢?如下:

事務的基本操作

multi
作用:設定事務的開啟位置,此指令執行後,後續的所有指令均加入到事務中

exec
作用:設定事務的結束位置,同時執行事務,與multi成對出現,成對使用

注意:加入事務的命令暫時進入到任務佇列中,並沒有立即執行,只有執行exec命令才開始執行

事務定義過程中發現出了問題,怎麼辦?

discard
作用:終止當前事務的定義,發生在multi之後,exec之前

事務的工作流程

事務的注意事項

定義事務的過程中,命令格式輸入錯誤怎麼辦?

語法錯誤:指命令書寫格式有誤

處理結果:如果定義的事務中所包含的命令存在語法錯誤,整體事務中所有命令均不會執行,包括那些語法正確的指令。

定義事務的過程中,命令執行出現錯誤怎麼辦?

執行錯誤:指命令格式正確,但是無法正確的執行,例如對list進行incr操作

處理結果:能夠正確執行的命令會執行,執行錯誤的命令不會被執行

注意:已經執行完畢的命令對應的資料不會自動回滾,需要程式設計師自己在**中實現回滾。

實際應用中使用事務偏少,因為很雞肋,得手動回滾事務

Redis高階 之 事務

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

Redis之事務案例

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

Redis學習之事務九

1.可以一次執行多個命令,本質就是一組命令的集合。乙個事務中的所有命令都會序列化,按順序地序列化執行而不會被其他命令插入,不許加塞。開啟事務執行 multi執行事務完成佇列中命令的執行 exec什麼是樂觀鎖?樂觀鎖 每次去那資料的時候都認為別人不會修改資料,所以不會上鎖,但是在更新的時候會去判斷一下...