国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java基于redis和mysql實現簡單的秒殺(附demo)

Java基于redis和mysql實現簡單的秒殺(附demo)

2021-08-05 11:24JAVA拾貝 Java教程

這篇文章主要介紹了Java基于redis和mysql實現簡單的秒殺(附demo),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一.秒殺業務分析

所謂秒殺,就是網絡賣家發布一些超低價格的商品,所有買家在同一時間網上搶購的一種銷售方式。秒殺商品通常有兩種限制:時間限制,庫存限制,其中庫存超賣問題是本教程的重點!

秒殺業務的運行流程主要可以分為以下幾點:

  • 商家提交秒殺商品申請,錄入秒殺商品數據,主要有:商品標題,商品原價,秒殺價格,商品圖片,介紹等信息
  • 運營商審核秒殺申請
  • 秒殺頻道首頁列出秒殺商品,點擊秒殺商品圖片可以跳轉到秒殺商品詳細頁面
  • 商品詳細頁面顯示秒殺商品信息,點擊立即搶購實現秒殺下單,下單時扣減庫存,當庫存為0或者不存在活動時間范圍內時無法秒殺
  • 秒殺下單成功,直接跳轉到支付頁面(掃碼),支付成功,跳轉到成功頁面,填寫收貨、電話、收件人等信息,完成訂單。
  • 當用戶秒殺下單5分鐘內未支付,取消預訂單,調用支付的關閉訂單接口,恢復庫存。

二.數據庫設計

商品表:

Java基于redis和mysql實現簡單的秒殺(附demo)

訂單表:

Java基于redis和mysql實現簡單的秒殺(附demo)

三.秒殺實現思路

秒殺技術實現核心思想是運用緩存減少數據庫瞬間的訪問壓力。讀取商品詳細信息時要運用緩存,當用戶點擊搶購時也要運用緩存,減少緩存中的庫存數量,當庫存數為0時或活動時間結束才同步到數據庫中。產生的秒殺預訂單也不會立刻寫到數據庫中,而是先寫到緩存,當用戶付款成功后再寫入數據庫,或者異步寫入MQ,讓數據庫根據自身的能力去消費。

四.實現關鍵步驟說明

緩存商品信息,庫存信息

  1. @Override
  2. @Transactional(rollbackFor = Exception.class)
  3. public GoodsEntity initGoods(String name, Integer amount, BigDecimal price) {
  4. GoodsEntity goodsEntity = new GoodsEntity().setName(name).setAmount(amount).setPrice(price).setStartDate(new Date()).setEndDate(new Date());
  5. Assert.isTrue(goodsService.save(goodsEntity), "搶購商品初始化發生異常~");
  6. // 緩存庫存
  7. redisTemplate.opsForValue().increment("amount:" + goodsEntity.getId(), amount);
  8. // 緩存商品信息
  9. redisTemplate.opsForValue().set("goods:" + goodsEntity.getId(), goodsEntity);
  10. return goodsEntity;
  11. }

基于redis incr 原子性防止超賣

  1. @Override
  2. @Transactional(rollbackFor = Exception.class)
  3. public Boolean secKill(String key) {
  4. Long result = redisTemplate.opsForValue().decrement("amount:" + key, 1);
  5. if (result.compareTo(0L) >= 0) {
  6. // 下面的數據庫操作建議走MQ讓數據庫按照他的處理能力,從消息隊列中拿取消息進行處理。
  7. Try.of(() -> {
  8. Assert.isTrue(goodsService.secKill(Long.valueOf(key)), "庫存不足!");
  9. OrderEntity orderEntity = new OrderEntity().setGoodsId(Long.valueOf(key)).setOrderNo(UUID.randomUUID().toString().replace("-", ""));
  10. Assert.isTrue(orderService.save(orderEntity), "訂單創建發生異常~");
  11. redisTemplate.opsForValue().set("secKill:" + orderEntity.getId(), orderEntity.getOrderNo(), 10, TimeUnit.SECONDS);
  12. return true;
  13. }).onFailure((e) -> {
  14. log.error("持久化異常:" + e.getMessage());
  15. redisTemplate.opsForValue().increment("amount:" + key, 1);
  16. });
  17. return false;
  18. }
  19. redisTemplate.opsForValue().increment("amount:" + key, 1);
  20. return false;
  21. }

最終效果:

Java基于redis和mysql實現簡單的秒殺(附demo)

Java基于redis和mysql實現簡單的秒殺(附demo)

觀察redis存儲的數據和數據庫的訂單記錄可發現,秒殺場景基本實現!

四.總結

本文主要解決超賣,和長時間未支付庫存重置的問題; 實際場景,還要考慮前后端的多種優化(靜態頁、cdn、防止重復下單、限流等等……)

五.完整代碼示例

前往下載

到此這篇關于Java基于redis和mysql實現簡單的秒殺(附demo)的文章就介紹到這了,更多相關Java基于redis和mysql秒殺內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/kuangni5808/article/details/109578241

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲精品久久久 | 久久精品国产精品青草 | а天堂中文最新一区二区三区 | 欧美精品一二三 | 欧美一区亚洲二区 | 成人午夜视频网 | 一级片在线观看 | 国产精品久久久久久久久图文区 | 91久久精品一区 | 国产偷亚洲偷欧美偷精品 | 欧美另类视频 | 国产精品久久久久久亚洲调教 | 国产一区久久 | 午夜午夜精品一区二区三区文 | 国产一区二区在线免费观看 | 美女超碰 | 在线观看成人小视频 | 亚洲精品乱码久久久久久蜜糖图片 | 中文字幕综合在线 | 亚洲成人在线观看视频 | 午夜精品一区二区三区免费视频 | 午夜免费av | 99久色| 婷婷综合久久 | 在线视频一区二区三区 | 久久久久国产一区二区三区 | 操她视频网站 | 日韩国产精品一区二区三区 | 成a人片在线观看 | 国产精品女教师av久久 | 日本福利片 | 国产看片网站 | 中文字幕亚洲精品 | 伊人久久综合精品一区二区三区 | 国产精品久久久久久亚洲调教 | 精品一区二区三区中文字幕 | 三级视频在线观看 | 色香蕉视频 | 在线欧美日韩 | 免费看国产片在线观看 | 成人乱人乱一区二区三区 |