如何用redis实现消息队列抢单功能

import time
import redis
# 连接数据库
db = redis.Redis(host='192.168.3.2',port = 6379,decode_responses = False) # 连接redis数据库
print('连上了')

def phone_into(phone_name): # 将待抢购商品加入到redis队列中
    db.lpush('phone_lists',phone_name)
    print(f'{phone_name}已经插入进去')
    print(db.lrange('phone_lists',0,-1))  # 展出当前redis队列中存在哪些商品

def qsj(man):  # 实现抢购
    if not db.llen('phone_lists'):
        print('抢完了')
        return
    if db.sadd('qgdr',man):  # 如果插入成功(插入成功会返回1,插入失败会返回0),说明该人员未抢购
        print('当前剩余商品',db.lrange('phone_lists', 0, -1)) # 展示出当前redis队列中剩余哪些商品
        print(f'{man}抢到了{db.rpop("phone_lists")}')
        db.sadd('qgdr',man)
    else:  # 插入数据失败,说明已抢购,不能重复抢购
        print(f'{man}已经抢过了')

if __name__ == '__main__':
    db.flushdb()
    for phone in ['phone1','phone2','phone3','phone4']:
        phone_into(phone)
    print('已插入完毕,开枪')
    time.sleep(2)
    for x in ['a','b','c','a','b','c','f','g','h']:
        qsj(x)

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值