Java高并发的写入mysql_Java高并发秒杀之接口优化

本文介绍了Java高并发秒杀场景下如何优化接口,包括Redis预减库存以减少数据库访问,内存标记来降低Redis访问频率,以及利用请求入队和异步下单提升用户体验。通过这些方法,能够有效处理大量并发请求,确保秒杀系统的稳定性和用户满意度。
摘要由CSDN通过智能技术生成

接口优化

Redis预减库存减少数据库的访问

内存标记减少redis访问

请求先入队缓冲,异步下单,增强用户体验

RabbitMQ安装与Spring Boot集成

1、Redis预减库存减少数据库的访问

顾名思义,Redis预减库存减少数据库的访问的思想就是减少对数据库的访问。

(1)系统初始化时,将商品库存信息加载到redis中;

(2)服务端收到请求后,redis预减库存,如果库存不足,则直接进入下一步;

(3)服务端将请求入队,立即返回向客户端返回排队中的信息,提高用户体验;

(4)服务端请求出队,生成秒杀订单,减少库存;

(5)最后客户端轮询是否秒杀成功。

系统初始化,把商品库存数量加载到Redis

实现接口 InitializingBean

ee947dc58265

实现方法

ee947dc58265

服务端收到请求后,redis预减库存,如果库存不足,则直接进入下一步

ee947dc58265

请求出队,生成订单,减少库存

ee947dc58265

客户端轮询,是否秒杀成功

ee947dc58265

2、内存标记减少redis访问

在MiaoshaController定义一个HashMap,在某一商品已经秒杀结束时,在HashMap中对该商品的库存进行标记,如果库存为0,则将该商品标记为已经秒杀结束。

然后在从redis中读取库存信息前做一次判断,如果该商品已经秒杀结束,则不用在访问redis中的库存信息。

ee947dc58265

ee947dc58265

3、请求先入队缓冲,异步下单,增强用户体验

服务器收到秒杀请求后,将请求放置在队列中,提高用户体验。然后秒杀请求出队,服务器生成秒杀订单,减少缓存中的库存。

具体过程:

如果秒杀商品库存尚有,则生成一条秒杀消息发送到消息队列中;

消息的消费者收到秒杀消息后,从数据库中读取用户是否已经完成秒杀,如果没有,则减库存,下订单,写入订单信息到数据库中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值