请稍等 ...
×

采纳答案成功!

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

删除订单问题

这边按逻辑来讲如果要把订单取消 删除订单,其实直接判断是否存在true然后删除redis缓存 做个这样的事务也行吧(还能保证原子性和时效),也没必要在删除订单里面也要加个乐观锁+事务 重新设置订单 感觉冗余了,而且在多数据情况下,一般几百上千个乘客同时取消订单,也没关系,就算 乘客A并发10次订单当 第一次执行的时候已经把redis删除了,后续缓存再进来看到没有key就会弹出删除失败,况且如果有漏网之鱼冲过redis缓存那就删除订单,撑死删除失败。但是订单数据一定会在第一次请求中删除掉吧

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

2回答

神思者 2023-06-28 20:26:01

假设现在乘客要修改订单,但是该订单有其他司机正在抢单,是不是会造成Redis冲突?如果有司机已经抢单成功了,就不能无条件取消订单了。你直接删除Redis缓存的做法是不对的,必须要用Redis事务去提交,如果事务失败,说明有司机接单了,需要额外设置有偿取消订单的功能

0 回复 有任何疑惑可以回复我~
  • 提问者 颜淮川 #1
    这是用事物的隔离性吗? 取消订单时但凡在判断我订单是否存在后 进入此时那么就算司机事务抢了单也得等待乘客取消订单的事务。 如果是这样相反来看 那为什么不在乘客端里面获取一边rediskey 判断是否为none呢?
    回复 有任何疑惑可以回复我~ 2023-06-28 20:44:15
  • 神思者 回复 提问者 颜淮川 #2
    没看明白你说的是什么,你重新整理思路,说的详细一点。
    回复 有任何疑惑可以回复我~ 2023-06-28 21:21:11
  • 提问者 颜淮川 #3
    其实我就想问问为啥不判断 订单缓存中是否存在司机id
    回复 有任何疑惑可以回复我~ 2023-06-28 21:23:14
提问者 颜淮川 2023-06-28 16:17:00

而且我最搞不明白的一点是删除订单,如果判断的订单存在了,此时突然有司机接单,那么这单是删除呢?还是不删除呢?

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
多端全栈项目实战,大型商业级代驾业务全流程落地
  • 参与学习       554    人
  • 解答问题       374    个

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

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