redis事務及鎖應用

2021-07-31 20:49:26 字數 1312 閱讀 3488

redis事務及鎖應用

redis支援簡單的事務

redis與mysql事務的對比

redis

mysql

開啟multi

start transaction

語句普通命令

普通sql

失敗discard取消

rollback回滾

成功exec

commit

注:rollback與discard的區別

如果已經成功執行了2條語句,第3條語句出錯

rollback後,前2條的語句影響消失。

discard只是結束本次事務,前2條語句造成的影響仍然還在

注:multi後面的語句都會放入乙個佇列中,exec後再執行;

在multi後面的語句中,語句出現錯誤可能有2種情況

1、語法有問題:

這種情況下exec時,所有的語句都得不到執行

2、語法本身沒錯,但是適用物件有問題,比如sadd操作link物件,

exec之後,會執行正確的語句,並且跳過有不適當的語句

(如果sadd操作link這種事應該怎麼避免?這一點只能由程式設計師負責)

思考:我正在買票

ticket-1,money-100

而票只有1張,如果在我multi之後和exec之前,票被別人買了---- 即ticket=0

我該如何觀察這種情況,並不在提交

悲觀的想法:

世界充滿危險,肯定有人和我搶,給ticket上鎖,只有我能操作。(悲觀鎖)

樂觀的想法:

沒有那麼多的人和我搶,因此,我只需要注意---沒有人更改ticket的值就可以了(樂觀鎖)

redis的事務中,啟用的就是樂觀鎖,只負責檢測可key有沒有被修改。

作用:監聽key1 key2..... keyn有沒有發生變化,如果有變,則事務取消(任意乙個發生變化,事務都取消)

unwatch

作用:取消所有watch監聽

redis事務及鎖應用 發布訂閱模式

mysql和ridis事務對比 redis事務時執行命令放到了佇列裡。注 rollback與discard的區別 如果已經成功執行了2條語句,第三條語句出錯 rollback後前2條語句影響消失。discard只是結束本次事務,前2句造成的影響還在。注 在multi後面的語句中,語句出錯可能有2中情...

Redis事務 事務鎖

一旦成功所有的成功,乙個失敗,所有一些列連續動作都失敗 事務的基本操作 注意 加入事務的命令暫時到任務佇列中,並沒有立即執行,只有執行exec命令才開始執行事務定義過程中發現問題,怎麼辦?discard 事務的工作流程 事務的注意事項 手動進行事務回滾 業務場景1 業務分析 基於特定條件的事務執行 ...

Redis事務和鎖的應用詳解

無論是大小專案還是各種系統,相信事務是不容忽視的,下面,我們對redis的事務展開討論。如果你比較熟悉mysql的事務,redis的事務那就很簡單了。我們對redis的事務和mysql的事務進行下比較就能更清楚的了解到redis的事務機制了。通過比較,我們可以清楚的看到redis的事務命令,先看一段...