为了账号安全,请及时绑定邮箱和手机立即绑定

一点小疑惑

第一步判断队列长度,第二步插入队列。

那如果瞬时多个请求同时到达,是不是会有这一种情况出现:

第一步得到的值都是小于10的(因为还没走到第二步),然后真正插入到队列中的数据就会超过设定值?

正在回答

1 回答

确实会有这样的问题发生,解决方案有两个:

1、提前将秒杀数据写入到队列中,比如你写10个随机数(token)进入队列,然后有请求过来的时候,你开始pop这个token,并判断得到的值是否为空,如果为空说明10个token已经被取完了,秒杀结束。因为pop是redis的原始操作,不用担心重复返回相同值的问题。

2、在你的消费进程中设置为单线程处理,只处理10个记录。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
PHP消息队列实现及应用
  • 参与学习       32730    人
  • 解答问题       58    个

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

进入课程

一点小疑惑

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信