redis中的事務 版本2 6 16

2022-07-22 11:27:12 字數 973 閱讀 4085

1.multi

開始事務

2.exec

事務提交

3.取消事務

discard

1.示例

redis>set key1 20

okredis>mutil

okredis>get key1

queued

redis>incr key1

queued

redis>exec

1)"20"

2)(integer)"21"

2.redis中的事務算是非常簡單的,它將一組命令放入佇列;即便要取值,也會將該命令放入佇列.等到exec時候,再用for迴圈,將命令全部寫入,如果其中一條命令執行錯誤,則放棄全部命令的寫入.

設想乙個場景,client1拿到了key1後,做了一系列其他操作,在此期間client2對key1加1;client1最後也對key1加1;理論上應該是key1加2,但實際上key1只是加了1;這就是併發產生的問題,redis提供了基於watch命令的樂觀鎖來防止這一問題產生.

1.基本命令

a.watch key1 ... keyn

監控某個key

b.unwatch

取消監控

*watch必須和mutil...exec配合使用,單獨使用並不起作用.watch監控乙個key,之後mutil...exec執行一組語句,如果在此期間,有另乙個client更改了watch監控的key對應的值,則exec執行返回nil,整組命令不會提交.

2.示例

a.client1

a.redis>watch key1

b.redis>multi

c.redis>incr key1

d.redis>exec

b.client2

在client1執行到c這一步時,client2也執行incr key1;client1執行exec時,發現watch的key1有改變,則放棄整個事務寫入,返回nil

Redis中的事務

flushall清除所有的鍵值 1 multi 開啟事務,事務塊中的多條語句會按照順序放入佇列中。multi incr counter1 incr counter2 incr counter3 ping get counter1 2 exec 執行事務塊中的命令 3 watch 監視乙個或者多個ke...

redis中的事務

redis支援簡單的事務 redis與 mysql事務的對比 mysql redis 開啟 start transaction muitl 語句 普通sql 普通命令 失敗 rollback 回滾 discard 取消 成功 commit exec 注 rollback與discard 的區別 如果...

Redis 中的事務

redis支援簡單的事務 redis與 mysql 事務的對比 mysql redis 開啟start transaction muitl 語句普通sql 普通命令 失敗rollback 回滾 discard 取消 成功commit exec 注 rollback 與discard 的區別如果已經成...