多线程学习三之秒杀系统

定时任务:quartz的学习

 

cron表达式:

redis秒杀问题:

程序流程:

1:首先我们需要将数据库中的商品信息放到redis中:

在商品添加到hash的同时,为每个商品创建一个队列,队列名称为:固定的前缀+商品的id,队列的大小与该商品的数量有关

2:下单业务:

首先判断该用户是否已经下单了该商品:我们在redis中创建了一个set,存放当前商品下单的用户:

如果已经下单,返回结果

3:如果没有下单:

先从该商品的商品队列中得到id ,如果队列为空,则说明 队列中的商品都 被下单了

4:如果有商品没有被下单:

将用户信息保存到 下单用户的set中,并且将 订单信息写到下单的list中,订单信息:员工id和商品id

5:然后开启线程:开启线程用来操作redis中的商品数量的修改,和具体的下单信息存到 下单的 hash中

线程内容:

我们从下单的队列中:得到下单信息:用户信息,和商品的id,如果没有得到订单信息,说明订单都已将处理完了

然后利用同步代码块,修改该商品 库存的数量:

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值