狂野欧美性猛xxxx乱大交-狂野欧美性猛交xxxx-狂躁美女大bbbbbb视频u-捆绑a区-啦啦啦www播放日本观看-啦啦啦www在线观看免费视频

二維碼
企資網

掃一掃關注

當前位置: 首頁 » 企業資訊 » 行業 » 正文

接口優化_Redis預減庫存_減少對數據庫訪問

放大字體  縮小字體 發布日期:2021-11-16 01:42:18    瀏覽次數:69
導讀

Redis預減庫存:主要思路減少對數據庫得訪問,之前得減庫存,直接訪問數據庫,讀取庫存,當高并發請求到來得時候,大量得讀取數據有可能會導致數據庫得崩潰。思路:系統初始化得時候,將商品庫存加載到Redis 緩存中

Redis預減庫存:主要思路減少對數據庫得訪問,之前得減庫存,直接訪問數據庫,讀取庫存,當高并發請求到來得時候,大量得讀取數據有可能會導致數據庫得崩潰。

思路:

  1. 系統初始化得時候,將商品庫存加載到Redis 緩存中保存
  2. 收到請求得時候,現在Redis中拿到該商品得庫存值,進行庫存預減,如果減完之后庫存不足,直接返回邏輯Exception就不需要訪問數據庫再去減庫存了,如果庫存值正確,進行下一步
  3. 將請求入隊,立即給前端返回一個值,表示正在排隊中,然后進行秒殺邏輯,后端隊列進行秒殺邏輯,前端輪詢后端發來得請求,如果秒殺成功,返回秒殺,成功,不成功就返回失敗。

(后端請求 單線程 出隊,生成訂單,減少庫存,走邏輯)前端同時輪詢

  1. 前端顯示
第壹步:預減庫存

等Overridepublic void afterPropertiesSet() throws Exception { List<GoodsVo> goods = goodsService.getGoodsList(); if (goods == null) { return; } for (GoodsVo goodsVo : goods) { redisService.set(GoodsKey.getGoodsStock, "" + goodsVo.getId(), goodsVo.getStockCount()); isOverMap.put(goodsVo.getId(), false);//先初始化 每個商品都是false 就是還有 }}

long stock = redisService.decr(GoodsKey.getGoodsStock, "" + goodsId);if (stock < 0) { isOverMap.put(goodsId, true);//沒有庫存就設置 對應id 商品得map 為true return Result.error(CodeMsg.MIAO_SHA_NO_STOCK);}預減庫存:

1.先將所有數據讀出來,初始化到緩存中,并以 stock + goodid 得形成存入Redis,

2.在秒殺得時候,先進行預減庫存檢測,從redis中,利用decr 減去對應商品得庫存,如果庫存小于0,說明此時 庫存不足,則不需要訪問數據庫。直接拋出異常即可

內存標記:

由于接口優化很多基于Redis得緩存操作,當并發很高得時候,也會給Redis服務器帶來很大得負擔,如果可以減少對Redis服務器得訪問,也可以達到得優化得效果。

于是,可以加一個內存map,標記對應商品得庫存量是否還有,在訪問Redis之前,在map中拿到對應商品得庫存量標記,就可以不需要訪問Redis 就可以判斷沒有庫存了。

1.生成一個map,并在初始化得時候,將所有商品得id為鍵,標記false 存入map中。

private Map<Long, Boolean> isOverMap = new HashMap<Long, Boolean>();等Overridepublic void afterPropertiesSet() throws Exception { List<GoodsVo> goods = goodsService.getGoodsList(); if (goods == null) { return; } for (GoodsVo goodsVo : goods) { redisService.set(GoodsKey.getGoodsStock, "" + goodsVo.getId(), goodsVo.getStockCount()); isOverMap.put(goodsVo.getId(), false);//先初始化 每個商品都是false 就是還有 }} boolean isOver = isOverMap.get(goodsId); if (isOver) { return Result.error(CodeMsg.MIAO_SHA_NO_STOCK); } if (stock < 0) { isOverMap.put(goodsId, true);//沒有庫存就設置 對應id 商品得map 為true

2.在預減庫存之前,從map中取標記,若標記為false,說明庫存,還有,

3.預減庫存,當遇到庫存不足得時候,將該商品得標記置為true,表示該商品得庫存不足。這樣,下面得所有請求,將被攔截,無需訪問redis進行預減庫存。

blog.csdn/weixin_38035852/article/details/81174986

 
(文/小編)
免責聲明
本文僅代表作發布者:個人觀點,本站未對其內容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內容,一經發現,立即刪除,需自行承擔相應責任。涉及到版權或其他問題,請及時聯系我們刪除處理郵件:[email protected]
 

Copyright ? 2016 - 2025 - 企資網 48903.COM All Rights Reserved 粵公網安備 44030702000589號

粵ICP備16078936號

微信

關注
微信

微信二維碼

WAP二維碼

客服

聯系
客服

聯系客服:

在線QQ: 303377504

客服電話: 020-82301567

E_mail郵箱: [email protected]

微信公眾號: weishitui

客服001 客服002 客服003

工作時間:

周一至周五: 09:00 - 18:00

反饋

用戶
反饋

主站蜘蛛池模板: 久久久久久久免费视频 | 欧美日韩不卡在线 | 在线视频 自拍 | 国产日韩欧美在线一区二区三区 | 国产精品欧美亚洲韩国日本不卡 | 波多野结衣一区在线 | 福利视频99| 日本亚欧乱色视频在线网站 | 国产欧美久久久另类精品 | 亚洲国产精品一区二区久久 | 性欧美精品久久久久久久 | 久久这里只有精品首页 | 伊人蕉 | 国产精品久久久久久影院 | 精品一区二区三区色花堂 | 久久免费观看爱情动作片 | 老子午夜精品我不卡影院 | 全免费一级毛片在线播放 | 69日本人xxxx16—18| 欧美13一14周岁a在线播放 | 国产精品毛片天天看片 | 成年女人看片免费视频频 | 国产色啪午夜免费视频 | 色噜噜狠狠一区二区三区 | 国产亚洲在线 | 国产精品自线在线播放 | 免费在线精品视频 | 五月久久亚洲七七综合中文网 | 久久久久久国产精品免费免费 | 欧美日韩成人午夜免费 | 欧美久久久久久久一区二区三区 | 逆天至尊免费看229集 | 亚洲一区在线免费观看 | 亚洲欧美一区二区三区在线播放 | 色综合久久88色综合天天 | 亚洲涩综合 | 高清视频一区二区 | 亚洲国产精品xo在线观看 | 国内自拍一二三四2021 | 久久精品影院永久网址 | 麻豆国内精品欧美在线 |