秒杀优化(阻塞队列实现)
  RuXuq8CpAyRj 2023年11月02日 33 0

秒杀优化(阻塞队列实现)_Redis

库存使用Redis的string类型进行存储

下单人使用Redis的set类型进行存储,set类型中数据不可重复

秒杀优化(阻塞队列实现)_阻塞队列_02

1.将优惠券数据存放到Redis中,通过Lua脚本实现对库存是否充足,用户是否下单,以及扣减库存的操作,Lua脚本时原子性的,要么成功,要么失败。

2.开启异步线程,将数据存入数据库中,并发性能提高,秒杀耗时减少

秒杀优化(阻塞队列实现)_秒杀_03

什么是阻塞队列

在数据结构中,队列遵循FIFO(先进先出)原则。在java中,Queue接口定义了定义了基本行为,由子类完成实现,常见的队列有ArrayDequeLinkedList等,这些都是非线程安全的,在java 1.5中新增了阻塞队列,当队列满时,添加元素的线程呈阻塞状态;当队列为空时,获取元素的线程呈阻塞状态。

优化思路

①先利用Redis完成库存余量、一人一单判断,完成抢单业务

②再将下单业务放入阻塞队列,利用独立线程异步下单


基于阻塞队列的异步秒杀存在哪些问题?

●内存限制问题

●数据安全问题

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
RuXuq8CpAyRj