请稍等 ...
×

采纳答案成功!

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

在超卖问题上,理解是网络并发引起的超卖问题,没太理解redis超卖问题

老师,有个地方没太理解,在秒杀抢券活动中,在超卖问题上,理解是网络并发引起的超卖问题,老师您说是redis多线程问题导致的,老师,有个地方我没太理解,为什么通过lua脚本放到一个线程里执行就好了,实际上同一时间可能会有并发很多个单线程在执行查库存并扣库存操作,能否给详细回复下

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

2回答

北极玉米 2022-07-15 23:18:37

个人理解,超卖问题出现的原因是因为查询count和自减不是原子操作,lua脚本就是让这两个指令在变成redis执行时的原子操作。Redis在执行的时候其实还是单线程的,这样子执行起来,一个操作要么执行,要么没有执行,于是乎就不会有超卖现象了。

1 回复 有任何疑惑可以回复我~
  • 是这样的 理解到位
    回复 有任何疑惑可以回复我~ 2022-07-25 20:56:13
InCowboy 2021-02-23 14:21:56

你理解的产生超卖的原因是正确的,这里所讲的Redis多线程其实就是请求上的高并发,开启了多个Redis客户端实例去对Redis进行操作,通过Lua脚本就是解决这个问题

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信