请稍等 ...
×

采纳答案成功!

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

redis cluster模式下主从切换带来的问题

老师,
你好!我想咨询一下扣减库存时,要是redis cluster进行主从切换的时候会不会发生超卖或者少卖的问题?
首先,我理解您代码中是使用原子性的incrby命令来完成更新和返回最新结果的动作的。我理解正常情况下即便是在cluster模式下,所有客户线程对于一个固定key的写操作都是在一个切片上的,所以原子性是不会有问题的。但是我这两天一直困惑于一些特殊情况:由于从切片从主切片上同步数据是异步的,所以如果进行秒杀活动时发生了切片的主从切换(主节点宕机),会不会造成超卖或者少卖?

假设有总库存6个,要是甲(买1个)、乙(买2个)、丙(买4个)三个人的请求甲和乙在主节点A上执行好了但是还没来得及复制到从节点B上(也就是甲和乙的扣减动作还未更新到从节点B上),这时候突然发生了主从切换,B节点升为主节点。,此时丙执行扣减动作是在B节点上的,会发现剩下库存还是6个而不是6-1-2=3个,会继续扣减库存,并且生成流水单。所以最后6个库存卖了7个。会不会出现这种超卖的现象?

另外,要是发生主从切换的时间点变为丙扣减发现库存<0并且加回了库存后,但是从节点只获取到了丙扣减库存的记录,但是没记录到丙加回库存的动作。这样会不会出现少卖?

老师,请问是不是有一定概率会出现这样的问题?要是出现的话一般是怎么处理的?

谢谢!

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

插入代码

1回答

龙虾三少 2020-03-08 23:36:31

redis没办法保证事务性 只能让他不超卖

0 回复 有任何疑惑可以回复我~
  • 老师,上面的问题好像是说,redis主从复制的延迟导致的超卖现象会不会发生
    回复 有任何疑惑可以回复我~ 2021-07-04 18:10:40
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号