redis实现商品秒杀业务的正确姿势
2021/7/21 2:05:54
本文主要是介绍redis实现商品秒杀业务的正确姿势,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
结论:双重reddision锁+redis的pop操作+失败回滚机制
1.选择reddision而不用redis原生锁是因为reddsion有线程排队等待机制,防止大量的请求因为拿不到锁而直接导致失败
2.第一层锁的目的是过滤掉并发的下单请求,让拿不到锁的线程排队等待,key为商品id
3.第二层锁的目的是过滤掉同一个人的多次下单请求,防止一人下多单,key为商品id:userId
4.通过redis的pop操作,过滤掉那些在已经售空之后发出的下单请求,减轻数据库压力。
5.pop操作不能放在第一层,必须要在锁的里面,防止有失败导致商品回退的情况发生,导致先进来的请求因为没有等到回退的商品反而抢购失败。
6.发生异常,则redis和数据库都进行回滚。此时分两种情况:
1)pop成功,但是操作数据库失败,此时回滚后redis和数据库中的数据都是正确的
2)pop失败,此时回滚后redis中的数据会多一个,但是不影响,因为最终是以数据库下单成功为准,相当于只是多出来一次无效请求。
7.数据库是最后一道关卡,update ... where 库存>0,防止超卖。
这篇关于redis实现商品秒杀业务的正确姿势的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-07Redis高并发入门详解
- 2024-12-07Redis缓存入门:新手必读指南
- 2024-12-07Redis缓存入门:新手必读教程
- 2024-12-07Redis入门:新手必备的简单教程
- 2024-12-07Redis入门:新手必读的简单教程
- 2024-12-06Redis入门教程:从安装到基本操作
- 2024-12-06Redis缓存入门教程:轻松掌握缓存技巧
- 2024-12-04Redis入门:简单教程详解
- 2024-11-29Redis开发入门教程:从零开始学习Redis
- 2024-11-27Redis入门指南:快速掌握Redis基础操作