成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

余額并發扣減一致性,能否使用Redis事務?

開發 開發工具 前端 Redis
文章非常多朋友留言問,能不能把余額放到reids里,利用redis的事務性來扣減余額。今天,就這個問題簡單的說一下。

并發扣款,如何保證數據的一致性?》一文的核心觀點是:使用CAS樂觀鎖,在寫回余額時加上舊余額的比對,可以在不影響吞吐量的前提下,保證余額的一致性。

文章非常多朋友留言問,能不能把余額放到reids里,利用redis的事務性來扣減余額。今天,就這個問題簡單的說一下。

redis如何實現事務性?

本質也是樂觀鎖。

在redis客戶端執行:

  1. $money = GET key 
  2. $money = $money - $diff 
  3. SET key $money 

在并發量大的時候,會遇到和《并發扣款,如何保證數據的一致性?》中描述的并發一致性問題。

redis的WATCH和EXEC可以提供類似事務的機制:

  • WATCH觀察key是否被改動
  • 如果提交時key被改動,EXEC將返回null,表示事務失敗

上面保證一致性的余額扣減可能類似于這樣執行:

  1. WATCH key 
  2. $money = GET key 
  3. $money = $money - $diff 
  4. MULTI 
  5. SET key $money 
  6. EXEC 

在WATCH之后,EXEC執行之前,如果key的值發生變化,則EXEC會失敗。redis的WATCH為何能夠保證事務性,本質上,它使用的就是樂觀鎖CAS機制。

大部分情況下,redis不同的客戶端會訪問不同的key,所以WATCH碰撞的概率會比較小,在秒殺的業務場景,即使使用WATCH,調用側仍然需要重試。

畫外音:如《同樣是高并發,QQ/微博/12306的架構難度一樣嗎?》所述,key的訪問會過濾uid屬性,所以可以支持高并發。

在CAS機制這一點上,redis和mysql相比沒有額外的優勢。

redis的性能之所以高,還是redis內存訪問與mysql數據落盤的差異導致的。內存訪問的不足是,數據具備“易失性”,如果重啟,可能導致數據的丟失。當然redis也可以固化數據,但如果每次都刷盤,redis反而性能會下降很多。

畫外音:每個工具都有自己的適用場景,不宜將緩存當數據庫用。

最后,redis用單線程來避免物理鎖,但mysql多線程也有多線程并發的優勢。

畫外音:各有優劣。

結論:可以使用redis的事務性扣減余額,但在CAS機制上比mysql沒有優勢,高性能是因為其內存存儲的原因,帶來的副作用是數據有丟失風險。

任何脫離業務的架構設計都是耍流氓。

【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】

戳這里,看該作者更多好文

 

責任編輯:趙寧寧 來源: 51CTO
相關推薦

2023-12-01 13:51:21

數據一致性數據庫

2022-10-19 12:22:53

并發扣款一致性

2022-08-29 08:38:00

事務一致性

2020-05-12 10:43:22

Redis緩存數據庫

2017-07-25 14:38:56

數據庫一致性非鎖定讀一致性鎖定讀

2022-08-11 07:55:05

數據庫Mysql

2019-08-30 12:46:10

并發扣款查詢SQL

2024-01-10 08:01:55

高并發場景悲觀鎖

2022-12-14 08:23:30

2021-03-04 06:49:53

RocketMQ事務

2024-01-31 09:54:51

Redis分布式

2025-03-10 09:20:00

庫存異常Redis架構

2021-04-24 16:58:03

數據庫工具技術

2009-06-18 09:18:08

Oracle檢索數據數據一致性事務恢復

2021-02-05 08:00:48

哈希算法?機器

2021-02-02 12:40:50

哈希算法數據

2023-12-19 09:43:43

MongoDB并發

2023-12-20 08:11:02

Redis節點通信

2024-05-08 16:37:17

MySQLRedis數據庫

2020-11-24 09:03:41

一致性MySQLMVCC
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99久视频| 狠狠草视频 | 中文字幕视频在线看5 | 久久黄色网 | 国产一区视频在线 | 精品毛片在线观看 | 国产免费一区二区三区 | 高清免费av | 岛国在线免费观看 | 中文字幕av网 | 欧美精品1区 | 在线观看国产网站 | 欧美成人一级 | 亚洲91 | 国产黄色网址在线观看 | 日韩淫片免费看 | 国产精品国产 | 99精品国产一区二区青青牛奶 | 特级做a爰片毛片免费看108 | 日韩三区 | 影音先锋成人资源 | 久草在线 | 久久这里只有精品首页 | 日本精品视频一区二区三区四区 | 拍真实国产伦偷精品 | 日本不卡一区 | 综合久久综合久久 | 97精品国产97久久久久久免费 | 亚洲精品久久视频 | 国产精品久久久久婷婷二区次 | 一区二区三区 在线 | 日日操夜夜操天天操 | 亚洲精品一 | 一区日韩 | 免费一区二区三区 | 欧美成人免费电影 | 国产羞羞视频在线观看 | 亚洲欧美一区二区三区国产精品 | 国产午夜精品一区二区三区 | 国产成人精品一区二区 | 欧美精品网站 |