怎么保证促销商品不会超卖

这个问题是我们当时开发时遇到的一个难点,超卖的原因主要是下的订单的数目和我们要促销的商品的数目不一致导致的,每次总是订单的数比我们的促销商品的数目要多,当时我们的小组讨论了好久,给出了好几个方案来实现:

第一种方案是:①在每次下订单前我们判断促销商品的数量够不够,不够不允许下订单,更改库存量时加上一个条件,只更改商品库存大于0的商品的库存,当时我们使用ab进行压力测试,当并发超过500,访问量超过2000时,还是会出现超卖现象。所以被我们否定了。

第二种方案是:②使用mysql的事务加排他锁来解决,首先我们选择数据库的存储引擎为innoDB,使用的是排他锁实现的,刚开始的时候我们测试了下共享锁,发现还是会出现超卖的现象。有个问题是,当我们进行高并发测试时,对数据库的性能影响很大,导致数据库的压力很大,最终也被我们否定了。

第三种方案是:③使用文件锁实现。当用户抢到一件促销商品后先触发文件锁,防止其他用户进入,该用户抢到促销品后再解开文件锁,放其他用户进行操作。这样可以解决超卖的问题,但是会导致文件得I/O开销很大。

最后我们使用了redis的队列来实现。将要促销的商品数量以队列的方式存入redis中,每当用户抢到一件促销商品则从队列中删除一个数据,确保商品不会超卖。这个操作起来很方便,而且效率极高,最终我们采取这种方式来实现

在商城项目开发中怎么保证促销商品不会超卖相关推荐

  1. 怎么保证促销商品不会超卖

    怎么保证促销商品不会超卖 这个问题是我们当时开发时遇到的一个难点,超卖的原因主要是下的订单的数目和我们要促销的商品的数目不一致导致的,每次总是订单的数比我们的促销商品的数目要多,当时我们的小组讨论了好 ...

  2. aspnet是前端还是后端_项目开发中无法回避的问题:前端和后端如何合作和并行工作?...

    项目开发中无法回避的问题:前端和后端如何合作和并行工作? 前端,后端要想非常愉快的合作开发和集成,那最开始第1步就是要定义一套共用的数据模型接口.这一步是所有工作可以顺利进行的前提. 数据模型接口之后 ...

  3. java商城项目_javaweb实战之商城项目开发(一)

    这篇文章主要针对javaweb商城项目开发进行实战演习,对javaweb商城项目开发进行详细分析,感兴趣的小伙伴们可以参考一下 一.项目功能结构 1.功能 2.实体 3.对应sql语句 CREATE ...

  4. 软件项目开发中的百分之九十效应

    在软件项目管理中,经常遇到这样的情况:进度到百分之九十后开始停滞,要花很长很长时间很大很大代价(甚至超过前百分之九十所花费的工时.工期)才能完成最后的百分之十.我把这种情况叫作:软件项目的百分之九十效 ...

  5. 项目开发中ARM单片机芯片分类及选型

    项目开发中单片机芯片的选型是一件重要而费心的事情 , 如果芯片型号选择得合适 , 单片机应用系统就会得经济 , 工作可靠 ; 如果选择得不合适 , 就会造成经济浪费 , 影响单片机应用系统的正常运行 ...

  6. Vue PC商城项目开发笔记与问题汇总

    Vue PC商城项目开发笔记与问题汇总 负责PC端商城项目,这也是人生第一个真正的项目.刚做了一天,就遇到不少问题,在这里列出自己的问题与解决办法,与大家交流,提升自己,希望以后不会掉进同一个坑里. ...

  7. 尚硅谷——谷粒商城项目开发记录——2021.11.19

    尚硅谷--谷粒商城项目开发记录--2021.11.19 出现错误 1.SpringBoot测试类出现Could not autowire. No beans of 'BrandService' typ ...

  8. 尚硅谷——谷粒商城项目开发记录——2021.11.22

    尚硅谷--谷粒商城项目开发记录--2021.11.22 概念: 1.对象优化: 新增的API: ES6 给 Object 拓展了许多新的方法,如: keys(obj): 获取对象的所有 key 形成的 ...

  9. 尚硅谷——谷粒商城项目开发记录——2021.11.21

    尚硅谷--谷粒商城项目开发记录--2021.11.21 概念: 1.var和let的区别: 作用域: var 声明的变量往往会越域 let 声明的变量有严格局部作用域 声明次数: var 可以声明多次 ...

最新文章

  1. NYOJ-199 无线网络覆盖
  2. 数字货币 矿池 矿场 区别
  3. python 绘制柱状图-Python使用Plotly绘图工具,绘制柱状图
  4. wdcp mysql密码_WDCP提示无法连接mysql及创建站点提示mysql密码不正确
  5. web靶机:kali linux 2.0下搭建DVWA渗透测试演练平台
  6. 【原】[webkit移动开发笔记]之空链接是使用javascript:void(0)还是使用#none
  7. Linux 下设置java环境和tomcat安装
  8. 【路面分类】基于matlab灰度共生矩阵图形纹理检测+SVM路面状况分类【含Matlab源码 1519期】
  9. 【MIMO通信】基于matlab MIMO_OFDM通信系统仿真【含Matlab源码 314期】
  10. java ssm进销存源码,ssm进销存流程管理系统
  11. 如何使用 CSS 使表格居中(快速指南)
  12. python数据科学包第三天(股票数据分析、时间事件日志)
  13. 【video】视频压缩编码和音频压缩编码的基本原理
  14. kafka消费端Attempt to heartbeat failed since group is rebalancing
  15. 刷完这50个标准库模块:没人比我更懂Python了
  16. 故障模块名称: mso.dll
  17. 提高Lua代码运行效率
  18. 微信企业支付到个人银行卡
  19. PC和DSP通信以及MCU和DSP通信之间的切换
  20. 什么是GLEW GLFW GLM

热门文章

  1. HTML页面设置ico图标
  2. 971: 统计利用先序遍历创建的二叉树的深度
  3. 某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。(30分) 题目内容: 某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3
  4. C++中的引用变量详解
  5. C++重点之“引用变量”用法
  6. c语言 int 型 无符号数 %u
  7. CS信号(片选信号)经常都是低电平有效
  8. Swift使用UIImagePickerController 从相册选择图片、从相机选择图片
  9. Empire信息收集
  10. 2023年这11种互联网创业项目,让你轻松起步