91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis中的事務/鎖

發布時間:2020-06-14 10:59:12 來源:網絡 閱讀:225 作者:梁十八 欄目:關系型數據庫

Redis支持簡單的事務

Redis與 mysql事務的對比

Redis中的事務/鎖

注: rollback與discard 的區別
如果已經成功執行了2條語句, 第3條語句出錯.
Rollback后,前2條的語句影響消失.
Discard只是結束本次事務,前2條語句造成的影響仍然還在

注:
在mutil后面的語句中, 語句出錯可能有2種情況
1: 語法就有問題,
這種,exec時,報錯, 所有語句得不到執行

2: 語法本身沒錯,但適用對象有問題. 比如 zadd 操作list對象
Exec之后,會執行正確的語句,并跳過有不適當的語句.

(如果zadd操作list這種事怎么避免? 這一點,由程序員負責)

Redis中的事務/鎖
(使用multi后,并沒有真正執行,而是放到一個queued(隊列)里,exec后才會執行)

Redis中的事務/鎖
(discard之后啥都沒變,因為只是放在隊列里。嚴格的說只能叫取消,不能叫回滾)

思考:
我正在買票
Ticket -1 , money -100
而票只有1張, 如果在我multi之后,和exec之前, 票被別人買了---即ticket變成0了.
我該如何觀察這種情景,并不再提交

悲觀的想法:
世界充滿危險,肯定有人和我搶, 給 ticket上鎖, 只有我能操作. [悲觀鎖]

樂觀的想法:
沒有那么人和我搶,因此,我只需要注意,
--有沒有人更改ticket的值就可以了 [樂觀鎖]

Redis的事務中,啟用的是樂觀鎖,只負責監測key沒有被改動.

具體的命令---- watch命令
例:
redis 127.0.0.1:6379> watch ticket (監控ticket,如果發生了變化,則執行不成功)
OK
redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379> decr ticket
QUEUED
redis 127.0.0.1:6379> decrby money 100
QUEUED
redis 127.0.0.1:6379> exec
(nil) // 返回nil,說明監視的ticket已經改變了,事務就取消了.
redis 127.0.0.1:6379> get ticket
"0"
redis 127.0.0.1:6379> get money
"200"

watch key1 key2 ... keyN
作用:監聽key1 key2..keyN有沒有變化,如果有變, 則事務取消

unwatch
作用: 取消所有watch監聽

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

突泉县| 永年县| 寿宁县| 旬邑县| 石柱| 苗栗市| 始兴县| 霍林郭勒市| 曲阳县| 瑞丽市| 梅河口市| 千阳县| 中宁县| 长乐市| 南岸区| 连南| 唐海县| 洞口县| 马龙县| 五家渠市| 馆陶县| 焉耆| 扎鲁特旗| 鹤岗市| 阿鲁科尔沁旗| 渑池县| 绥芬河市| 左云县| 望谟县| 梅州市| 山丹县| 通城县| 阿拉善右旗| 金华市| 拜城县| 万安县| 景洪市| 杭锦旗| 高淳县| 叙永县| 双柏县|