抢红包利用redis处理高并发

抢红包的业务流程大概是设置固定金额及数量的红包,比如1.68元20000个、3.8元20000个、8.8元1000个。

考虑高并发的情况下,我们需要有redis消息队列实现,具体方法如下:

1、创建抢红包活动,将5万份红包随机打乱,并放入redis中,使用队列list类型存储

lpush hongbao 每份红包…

2、访客来抢红包,考虑瞬间会有很多用户访问,这边需要对访客做个队列

lpush users 每个用户…

3、有了两个队列,需要跑一个定时任务,给每个用户分配一个红包

rpop users 弹出一个用户,并rpop hongbao 弹出一个红包。分配的结果存入结果队列。分配时还需要判断该用户是否已中奖,因此中奖时可以另外将已中奖用户存入redis的哈希类型。

4、另外一个定时任务去跑结果队列,将结果入库。

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注