超卖的问题还是没有想明白
来源:5-21 【勤于思考,夯实学习成果】阶段思考题

cjt5047
2019-09-14
老师,有两个小问题:
(1)这个项目解决超卖的方法是利用redis的单线程,在并发访问的时候可以串行化的执行扣减库存操作,另外通过库存售罄标志可以保证不超卖。仅仅这样就可以防止超卖了是吗?
业界解决超卖的方式主要都有哪些呢?
(2)超时释放时redis的状态:在利用mq异步扣减mysql的过程中,假设createOrder操作长时间不返回,或者程序死了,也就是程序用于不能走到回滚或者提交,则库存流水可能永远都是1,则checkLocalTranscation的操作永远都是unknow,需要有一个超时释放操作,例如当下单操作触发15分钟以上,用户还是没有收到一个明确的指示,则后台要有一个程序,将这个操作回滚释放掉,回补redis数量。是这样的思路吗?可是这个时候如何判断redis是否已经成功扣减过了?有没有可能redis没有扣减成功,并且长时间没有返回。也就是后台程序需要额外判断一下当前redis是否扣减过了是吗?不知道我理解的对不对
谢谢老师~辛苦了
写回答
1回答
-
龙虾三少
2019-09-14
redis单线程和超不超卖没关系 用redis是为了解决库存数据库的压力问题 第二个问题可以设置一个定时器 如果下单操作不能反回 超过15分钟释放stocklog
172023-12-31
相似问题