對於秒殺 搶購等場景,主從結構,多個redis之間同時讀寫,怎麼確保資料一致性?

時間 2021-06-21 14:47:38

1樓:gao xinge

相同點:都會走加購,下單,支付的標準流程;都需要防止超賣

不同點:因為秒殺商品相當於從某個時刻開始做活動的商品,所以從該時刻開始,可能會有大量的請求和流量湧入,去搶購相對只有少量庫存的商品。因此需要防止大量的請求和流量直接達到資料庫上,防止資料庫崩潰

前端 ---> nginx ---> service ---> databasegt; redis

重點看一下service裡面做了什麼:

普通商品(不考慮redis):1. 通過database檢視庫存;2. 如果庫存夠用,下單成功,否則下單失敗

秒殺商品(考慮redis):1. 限流;2. 通過redis檢視庫存;3. 如果庫存夠用,走上述普通商品的流程,否則下單失敗

redis資料不一致的原因:1. redis自身會導致不一致;2. redis和database之間也會導致不一致

redis資料不一致有本質影響嗎:不會有。因為redis的作用是流量過濾,而最終的庫存檢視還要走database,所以不會有超賣的情況發生

redis資料盡量保證一致的好處:雖然redis中的庫存資料和database中的庫存資料可能會有不一致(可大可小),不會有本質影響,但是如果redis的資料能及時盡量的和database中的資料保持同步,保持一致,那會更加精確的反應系統的現狀,從而能讓使用者的體驗更好

2樓:Tony

為保證一致性,現在可行的方法是做shard,即用Redis的cluster,本質上是key分布在不同的node上且互不重複。但主從不行,因為之間不是sync,無法保證一致性。

或者你等待我寫的乙個新工具,未來可以解決這個問題。

還有之前寫的乙個帖子,雖然和一致性沒有關係,但也許可能解決你的實際問題:

使用redis 的list為什麼不能解決分布式執行緒安全問題?

3樓:人醜就要多讀書

秒殺場景就不要多個redis追求一致性了。

多個redis可以分別維護不同區域的庫存(華北、華南、西北、東北等)提前和運營定好各地區的庫存。

你們對於搶購手機是怎麼看的?

現貨意味著要提前囤貨,提前囤幾個月意味著發布時間延遲,安卓陣營的手機沒有蘋果那樣長的熱度,也就半年多一點,所以搶先機比現貨更重要,別說什麼提價多少,個人的錢能多的過黃牛嘛,相對於預售,搶購對更多的人來說是機會公平 趙剛 零零發 關於這個話題,在知乎上問了5年了,我也答了5年了。感興趣的人去搜一下我過...

對於皮革等柔性材料,相對於傳統刀頭電腦切割機,雷射電腦切割機有什麼優缺點?

Yang 我認為核心在於雷射切割屬於非接觸加工。柔性材料切割難點在於 切割工具與柔性被切割材料相互作用,被切割材料在斷裂前的形變會影響切割精度,或者說在切割位置產生的形變影響了切割質量。雷射切割屬於非接觸加工,熱源集中,集中的高能熱源使皮革迅速氣化斷裂。優點在於被加工材料變形小,精度更高,對材料的使...

為什麼lo圈等圈子等對於山寨與正版的意識這麼強烈而遊戲圈會稍微好一點

Torandot 是,遊戲可以以後或者直接補票。LO裙不一樣,性質也不一樣。有的買山的單純覺得好看才買,或者不知情的情況下才買的,你覺得她還會 補票 山裙的幅度最高是幾千,我不認為乙個單純看對眼或者不知道正版沒有完全進圈的以後也會買這型別的裙子,或者直接就壓箱了。性質不一樣。而且如果山寨的日牌,很多...