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 的區別如果已經成...