请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

业务存在多个司机抢单问题

假设一个司机抢到订单了,在删除 Redis 之前,另外一个线程也进入事物进行抢单,这样就会存在多个司机抢到同一个订单,这个问题能否解决一下?在群里问了很多次都不回复,希望可以直面问题

正在回答 回答被采纳积分+3

1回答

神思者 2023-09-13 12:01:41

如果A事务提交成功,B事务在A事务提交之后开启的,B事务抢单失败。如果B事务在A事务提交之前开启的,A和B只有一个事务能提交成功。

https://img1.sycdn.imooc.com//szimg/650133ca093e560812120460.jpg


0 回复 有任何疑惑可以回复我~
  • 提问者 鬼影小天才 #1
    如果A事物执行成功,在删除缓存之前B又执行了事物,还是有问题
    回复 有任何疑惑可以回复我~ 2023-09-13 13:38:58
  • 神思者 回复 提问者 鬼影小天才 #2
    A事务提交成功,缓存数据里面就已经保存司机id,B事务在执行中会先判断缓存是否包含司机ID,B事务无法提交
    回复 有任何疑惑可以回复我~ 2023-09-13 17:22:38
  • 提问者 鬼影小天才 回复 神思者 #3
    代码中并没有判断缓存中是否包含司机ID,而是订单ID的key。并且如果有很多线程已经经过上面的if判断了呢?这个问题是存在的,我测试过了,老师你测过吗?
    回复 有任何疑惑可以回复我~ 2023-09-14 09:14:36
问题已解决,确定采纳
还有疑问,暂不采纳
多端全栈项目实战,大型商业级代驾业务全流程落地
  • 参与学习       589    人
  • 解答问题       410    个

50000+代码,300+技术点,慕课网明星讲师为你私人订制

了解课程
意见反馈 帮助中心 APP下载
官方微信