请稍等 ...
×

采纳答案成功!

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

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

插入代码

2回答

龙虾三少 2020-09-10 17:04:17

这种情况下主从没办法保证一致性 所以会出现问题

0 回复 有任何疑惑可以回复我~
yidaimi 2020-03-06 10:20:49

顶一个!我也有相同的问题,只是稍微有点不同。

个人浅见:正常情况下集群方式也不会影响原子性的。

集群方式有两种:sentinel和cluster。

sentiel是一主多从的结构,也就是说永远只有一个主节点负责写,由于只有一个节点负责写,那其实和单机redis其实是一样的。

cluster的话是一个主从切片模式,就是有n个主切片,每个主个切片有m个从切片,但是某个key的集合只能在某个特定的主切片以及它的m个从切片上,而这m+1个切片中m个从切片是只读的,写还是只能在那个唯一的主切片上。所以其实所有请求还是只对一个切片节点进行写操作。

所以正常情况下我理解不论sentinel还是cluster的原子性都是没问题的。

但是我觉得需要担心的是在秒杀活动的时候发生了节点的主从切换。假设有总库存6个,要是甲(买1个)、乙(买2个)、丙(买4个)三个人的请求甲和乙在主节点上执行好了,在执行丙操作的时候发生了主从切换,原先的从节点升级为主节点,并且由于种种原因这个新的主节点还未刷新到原来主节点宕机前最后的状态(也就是甲和乙的扣减动作还未更新到从节点上),此时丙会发现剩下库存还是6个而不是6-1-2=3个,会继续扣减库存,这样会不会出现超卖的现象?老师,请问这种问题如何处理啊?

0 回复 有任何疑惑可以回复我~
  • 主从切换必定不能保证一致性,这种对redis强依赖的就不能让他切换,宁愿挂掉让系统不可用也不要超卖,或者可以看下红锁的概念
    回复 有任何疑惑可以回复我~ 2020-08-04 12:06:53
  • 高可用 和 一致性 不可兼得 。 只能两权相重取其轻。
    回复 有任何疑惑可以回复我~ 2020-09-09 16:33:01
  • 那请问 现实中的秒杀架构中公司的redis难道也是单机吗?单机上限不高呀
    回复 有任何疑惑可以回复我~ 2020-09-17 08:16:47
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

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

帮助反馈 APP下载

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

公众号

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