当前位置:首页 > 编程笔记 > 正文
已解决

10、SpringCloud -- 优化重复下单

来自网友在路上 165865提问 提问时间:2023-10-31 01:15:55阅读次数: 65

最佳答案 问答题库658位专家为你答疑解惑

目录

  • 优化重复下单
    • 问题的产生:
    • 需求:
    • 思路:
    • 代码:
    • 测试:

优化重复下单

之前超卖、重复下单的解决方式

问题的产生:

比如这个秒杀活动没人去玩,只有一个人去参与秒杀,然后秒杀成功了,因为有联合索引,所以这个人他没法重复下单,但是他依然去请求秒杀,在秒杀的10个商品没被秒杀完之前,这个人的请求每次都会去数据库查这个人是否已经下单了,所以还是造成性能浪费。

因为已下单就不能再下单了,所以这个人如果下单一万次,那么这一万次请求(到数据库查询此人是否已成功下单过的操作)都会落到数据库去。

需求:

同一个人秒杀请求,不要每次都去数据库查询是否已经有下单记录
在这里插入图片描述

思路:

1、减少请求落到mysql的访问,让更多的请求去到 Redis 的缓存去查。

2、在用户下单成功,把数据存到数据库时,也把数据存一份到redis中,后面再controller进行判断的时候,如果有该用户的key存在redis,那么表明该用户已经下单过了,不用再去数据库查了。

代码:

1、在下单成功保存到数据库的时候,也弄一个key保存到redis中

2、在controller中判断的时候,先去redis中判断是否有对应的key,有就是说明该用户重复下单过了,抛异常提示。

在这里插入图片描述

测试:

成功,先走redis判断
在这里插入图片描述

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"10、SpringCloud -- 优化重复下单":http://eshow365.cn/6-28194-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!