微信红包池以及库存设计思考

库存设计:

一个商品主表 ------------    
100条库存记录,每各库存记录49个库存;额外一条保障库存记录有100个库存100个  一共101条库存记录;共5000库存

如何实现下单功能:

 1 如何实现减库存
 2 如何确保快速获取到库存个数大于0的库存记录并实现减库存
 3 如何保障5000库存均被消费
 
 
 
 写请求直接到库        读请求走缓存,实时性延迟处理    添加商品确保每个stock有一定的数量,比如下限100,如果小于100可能衍生成为普通库存记录【1条记录】
 market
 id product_id            stock  label
      1                 12       0
      1                 22       0
      1                 32       0
      1                 0        0
      1                 0        0
      1                 1        0
      1                 12       0
      1                 45       0
      1                 21       1 // 表示优先级较低的库存,防止并发都到了某一条库存记录,导致存在库存但减库存失败            
      
      
      
      如何减库存?
      减库存领域干减库存这个事情,如何设计?
      data = select * from market where stock > 0 and label = 0 and product_id =1 limit 0,1
          if data!=null
          success = update market set stock = stock - 1 where stock >= 1 and id = ?
              if success
                 return
              else
                 ok = update market set stock = stock - 1 where stock >= 1 and label = 1  and id = ?
                 if ok:
                     return 
                 else:
                     throw new Exception("库存不足")
          else:                            
                 ok = update market set stock = stock - 1 where stock >= 1 and label = 1  and id = ?
                 if ok:
                     return 
                 else:
                     throw new Exception("库存不足")
      
下单成功后,将请求减少命令异步发给Redis  【造成现象,用户看到库存下单提示库存没有】
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值