超卖问题

原因

两个人同时购买同一件商品,会产生超卖问题。

解决

  • 表设计
    无符号的表设计(unsigned)。在设计表的时候,把字段设置成无符号,即库存小于0的话,就会报错
    处理:在进行商品的库存减少的时候,不要先查再更新,直接更新库存。
  • 使用锁 耗费资源
    1.悲观锁
    select * from table_name for update
    2.乐观锁
    update sku set stock = 1 where id = ? and stock = 1 假设现在库存只有1件了
  • redis队列 使用List类型
    举例:iphoneX这件商品有100个库存,把商品的id向redis的list类型中压栈100次(把id存入100次),下单的时候询问时候有库存,判断的方式是是否能POP出数据
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容