采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
这边按逻辑来讲如果要把订单取消 删除订单,其实直接判断是否存在true然后删除redis缓存 做个这样的事务也行吧(还能保证原子性和时效),也没必要在删除订单里面也要加个乐观锁+事务 重新设置订单 感觉冗余了,而且在多数据情况下,一般几百上千个乘客同时取消订单,也没关系,就算 乘客A并发10次订单当 第一次执行的时候已经把redis删除了,后续缓存再进来看到没有key就会弹出删除失败,况且如果有漏网之鱼冲过redis缓存那就删除订单,撑死删除失败。但是订单数据一定会在第一次请求中删除掉吧
假设现在乘客要修改订单,但是该订单有其他司机正在抢单,是不是会造成Redis冲突?如果有司机已经抢单成功了,就不能无条件取消订单了。你直接删除Redis缓存的做法是不对的,必须要用Redis事务去提交,如果事务失败,说明有司机接单了,需要额外设置有偿取消订单的功能
这是用事物的隔离性吗? 取消订单时但凡在判断我订单是否存在后 进入此时那么就算司机事务抢了单也得等待乘客取消订单的事务。 如果是这样相反来看 那为什么不在乘客端里面获取一边rediskey 判断是否为none呢?
没看明白你说的是什么,你重新整理思路,说的详细一点。
其实我就想问问为啥不判断 订单缓存中是否存在司机id
而且我最搞不明白的一点是删除订单,如果判断的订单存在了,此时突然有司机接单,那么这单是删除呢?还是不删除呢?
登录后可查看更多问答,登录/注册
50000+代码,300+技术点,慕课网明星讲师为你私人订制
5.1k 15
759 10
785 10
529 10
873 9
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号