中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Spring Boot + Redis怎么解決商品秒殺庫存超賣

發布時間:2021-12-06 09:42:03 來源:億速云 閱讀:248 作者:柒染 欄目:大數據

這期內容當中小編將會給大家帶來有關Spring Boot + Redis怎么解決商品秒殺庫存超賣,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

問題描述

在眾多搶購活動中,在有限的商品數量的限制下如何保證搶購到商品的用戶數不能大于商品數量,也就是不能出現超賣的問題;還有就是搶購時會出現大量用戶的訪問,如何提高用戶體驗效果也是一個問題,也就是要解決秒殺系統的性能問題。本文主要介紹基于redis 實現商品秒殺功能。先來跟大家講下大概思路。

總體思路就是要減少對數據庫的訪問,盡可能將數據緩存到Redis緩存中,從緩存中獲取數據。

在系統初始化時,將商品的庫存數量加載到Redis緩存中;接收到秒殺請求時,在Redis中進行預減庫存,當Redis中的庫存不足時,直接返回秒殺失敗,否則繼續進行第3步;將請求放入異步隊列中,返回正在排隊中;服務端異步隊列將請求出隊,出隊成功的請求可以生成秒殺訂單,減少數據庫庫存,返回秒殺訂單詳情。當后臺訂單創建成功之后可以通過websocket 向用戶發送一個秒殺成功通知。前端以此來判斷是否秒殺成功,秒殺成功則進入秒殺訂單詳情,否則秒殺失敗。

下面直接上代碼系統初始化的時候將秒殺商品庫存放入redis緩存

Spring Boot + Redis怎么解決商品秒殺庫存超賣

第二創建消息隊列(這里為了方便,我直接使用redis隊列來進行模擬操作)

Spring Boot + Redis怎么解決商品秒殺庫存超賣

第三 配置RedisTemplate序列化

Spring Boot + Redis怎么解決商品秒殺庫存超賣

下面創建一個接口,在這個接口中創建10000個線程來模擬用戶商品搶購場景

Spring Boot + Redis怎么解決商品秒殺庫存超賣

Spring Boot + Redis怎么解決商品秒殺庫存超賣

這里使用到了redis api中的decrement操作,預先減輕用戶搶購的數量,同時判斷redis中的庫存是否大于用戶搶購數量,如果小于0,直接提示用戶秒殺失敗,否則秒殺成功,進入redis消息隊列執行數據庫建庫存操作。以上操作注意保證redis緩存與數據庫庫存數據保持一致性。

Spring Boot + Redis怎么解決商品秒殺庫存超賣

下面測試演示

Spring Boot + Redis怎么解決商品秒殺庫存超賣

初始化商品庫存100,在測試一萬并發量后,最終發現不會不會出現超賣問題。因為這里一萬個并發,每個并發搶購10件商品。經過redis減庫存之后,最后只會有10個線程去更新數據庫。

上述就是小編為大家分享的Spring Boot + Redis怎么解決商品秒殺庫存超賣了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

文成县| 柘荣县| 曲松县| 登封市| 伊宁县| 文昌市| 永修县| 正定县| 江油市| 宁国市| 怀集县| 江达县| 娱乐| 即墨市| 德格县| 甘德县| 普陀区| 丹巴县| 专栏| 平阳县| 福清市| 盈江县| 易门县| 永寿县| 当雄县| 洪雅县| 竹溪县| 鄢陵县| 兴国县| 扎鲁特旗| 吕梁市| 油尖旺区| 敦煌市| 平江县| 广丰县| 方山县| 措勤县| 宁乡县| 安塞县| 张北县| 旺苍县|