程序会不会有超过 秒杀数量的情况出现啊?

来源:3-2 Redis队列秒杀实现

_zzq

2019-09-21 15:46

老实, 帮忙问一个问题, 因为 消费队列一直在执行过程中,当我添加了一个队列后, 后台立即消费了, 那前台程序获取队列总数的时候就少了一个, 这个情况会出现吗? 一般如何解决啊?

写回答 关注

2回答

  • 寻找09之夏
    2020-01-05 22:42:02

    视频中采用for循环测试,这个是有序的,所以不会出现超卖现象;如果并发测试的话,会出现超卖现象;这里提供一个解决思路:活动前定义一个长度为10的list;利用lpop的原子性可以保障不会超卖;就是每次请求先lpop,如果可以获取到值,表示秒杀成功;获取不到说明已抢完。

  • IT行业小菜鸟
    2019-10-11 23:35:18

    可以通过设置一个const常量解决吧,常量初始值为0,有数据入队时常量值++,通过判断常量的值控制秒杀数量,这样消费者消费队列并不会影响统计秒杀数量

PHP消息队列实现及应用

消息队列是个什么玩意儿,使用队列解决秒杀等实际问题概念和使用方法

32730 学习 · 58 问题

查看课程

相似问题