一、秒杀的目的
- 特价商品,数量有限,先到先得,售完为止
二、优惠券的秒杀
- 和特价商品的秒杀是一样的,只不过秒杀的商品是优惠券
三、秒杀的需求
- 秒杀前:提前将秒杀商品,存放到Redis
- 秒杀中:使用Semaphare,判断是否成功秒杀
- 秒杀后:将秒杀商品放进RabbitMQ,实现异步下单
四、秒杀活动设计
4.1 秒杀场次
- 参考京东,每天固定5个场次,14,16,18,20,22
- 每个场次,持续两个小时
4.2 秒杀商品
- 参与秒杀的商品,需要和场次关联
- 一个场次,关联多个商品
五、秒杀前
提前将秒杀商品,存放到Redis
5.1 定时任务和异步任务
- 定时任务默认是阻塞的
- 使用@Async和@Scheduled注解即可
@Slf4j
@Component
public class HelloSchedule {
@Async
@Scheduled(cron = "* * * * * ?")
public void hello() {
log.info("hello...");
}
}
5.2 将秒杀信息存入Redis
- 缓存场次
- 缓存商品
六、秒杀中
- 判断是否登录