<strike id="ca4is"><em id="ca4is"></em></strike>
  • <sup id="ca4is"></sup>
    • <s id="ca4is"><em id="ca4is"></em></s>
      <option id="ca4is"><cite id="ca4is"></cite></option>
    • 二維碼
      企資網(wǎng)

      掃一掃關注

      當前位置: 首頁 » 企資快報 » 服務 » 正文

      接口優(yōu)化_Redis預減庫存_減少對數(shù)據(jù)庫訪問

      放大字體  縮小字體 發(fā)布日期:2021-11-16 00:06:32    作者:江建城    瀏覽次數(shù):10
      導讀

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

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

      思路:

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

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

      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.先將所有數(shù)據(jù)讀出來,初始化到緩存中,并以 stock + goodid 得形成存入Redis,

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

      內(nèi)存標記:

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

      于是,可以加一個內(nèi)存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

       
      (文/江建城)
      免責聲明
      本文僅代表作發(fā)布者:江建城個人觀點,本站未對其內(nèi)容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,需自行承擔相應責任。涉及到版權或其他問題,請及時聯(lián)系我們刪除處理郵件:weilaitui@qq.com。
       

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

      粵ICP備16078936號

      微信

      關注
      微信

      微信二維碼

      WAP二維碼

      客服

      聯(lián)系
      客服

      聯(lián)系客服:

      在線QQ: 303377504

      客服電話: 020-82301567

      E_mail郵箱: weilaitui@qq.com

      微信公眾號: weishitui

      客服001 客服002 客服003

      工作時間:

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

      反饋

      用戶
      反饋

      午夜久久久久久网站,99久久www免费,欧美日本日韩aⅴ在线视频,东京干手机福利视频
        <strike id="ca4is"><em id="ca4is"></em></strike>
      • <sup id="ca4is"></sup>
        • <s id="ca4is"><em id="ca4is"></em></s>
          <option id="ca4is"><cite id="ca4is"></cite></option>
        • 主站蜘蛛池模板: 真实国产乱人伦在线视频播放| a级大胆欧美人体大胆666| 蜜桃精品免费久久久久影院| 日韩在线播放中文字幕| 国产成年无码久久久久毛片| 亚洲av永久精品爱情岛论坛| 色在线亚洲视频www| 日韩视频第一页| 国产在线不卡免费播放| 久久久久成人精品无码| 色噜噜狠狠一区二区三区果冻| 精品一区二区三区四区五区| 官场猎艳警花美乳美妇| 免费中国jlzzjlzz在线播放| japanese日本护士高潮| 特黄特黄一级高清免费大片| 成人麻豆日韩在无码视频| 可爱男生被触手入侵下面| 中文午夜人妻无码看片| 第272章推倒孕妇秦| 天堂草原电视剧在线观看免费| 亚洲精品亚洲人成在线观看| 538在线播放| 日韩高清第一页| 国产乡下三级全黄三级bd| 丝袜美腿中文字幕| 狠狠做深爱婷婷久久综合一区| 国产高清在线a视频大全| 亚洲午夜国产片在线观看| 麻豆国产VA免费精品高清在线 | 用手指搅乱吧~打烊后的...| 天天夜碰日日摸日日澡| 亚洲欧美日韩中文字幕一区二区三区 | 国产一区曰韩二区欧美三区| 中国一级特黄**毛片免| 男同在线观看免费网站| 奇米影视7777狠狠狠狠影视| 亚洲欧洲无卡二区视頻| 鸭王3完整版免费完整版在线观看| 无码超乳爆乳中文字幕久久| 免费无码成人片|