Redis预减成功,但是DB扣减失败,导致商品卖不完怎
1.1k
等5人参与

两类情况可导致redis预减成功而DB扣减失败:
(1) 如果一个用户发出了多个请求(不管何种手段),而这些所有的请求比所有其他用的请求都更快的到达了服务器,这个时候如果库存足够,就会出现redis预减多次,而只能下单成功一次(前提是:这个用户的多个请求比网站的其他用户的请求都更快的到达服务器,这在网络环境不可知的情况下,基本不可能)
(2) 还有就是在生成订单的过程中发生了不可预料的异常,也会导致redis扣减成功,而db扣减失败(如果是DB出现了异常,可能所有的订单都无法生成,但是只要存在redis预减,活动就可以正常结束)
因此,在初始化的时候,redis中的数量可以多于db的库存数量,留出一点余量,但是也不要太多,否则预减就没有意义了。

出现这种情况的后果是什么?
(1) 对用户而言,秒杀不中是正常现象,秒杀中才是意外,单个用户能否秒杀中本来就是小概率事件,出现这种情况对用户而言是没有任何影响的。
(2) 对商户而言,本来就是为了做活动拉流量拉人气的,卖不完还可以省一部分费用,但是活动还是正常参与了,也是没有任何影响。
(3) 对网站而言,网站最重要的是用户体验,只要网站不崩,用户不骂娘,对网站也没有任何影响。
所以,卖不完是完全允许的,但是卖超是绝对不允许的!卖超的这部分钱商家是不会出的,需要网站自己来出。

我的作业
去发布

登录后即可发布作业,立即

全部作业

数据加载中...

意见反馈 帮助中心 APP下载
官方微信