SpringBoot 分布式锁实战:Redisson 解决订单超卖并发问题

📅 2026/8/6 2:56:41
SpringBoot 分布式锁实战:Redisson 解决订单超卖并发问题
做Java后端开发只要涉及秒杀、限量库存、下单扣减业务订单超卖绝对是绕不开的经典并发问题。我之前接手过一个电商项目压测的时候发现严重漏洞商品库存明明只剩10个高并发下单后最终成交订单达到了15个直接超卖5单导致后台对账出错、商家亏损线上事故非常严重。最开始我用 synchronized、ReentrantLock 本地锁解决本地锁在单体项目没问题但项目集群部署、多实例之后锁直接失效。因为本地锁只针对当前JVM生效不同服务实例之间无法互斥并发冲突依旧存在。最终在生产环境引入Redisson 分布式锁彻底根治超卖问题。今天结合真实线上实战完整复盘从问题出现、原理分析到代码落地的全套流程新手也能直接看懂、直接复用上线。一、为什么会出现订单超卖我简单还原一下业务场景用户下单前程序先查询库存判断库存大于0就执行扣减库存、生成订单逻辑。在高并发场景下大量请求同时查询库存此时库存还没来得及扣减所有请求都判定库存充足同时进入下单逻辑就会出现库存扣减错乱、超卖溢出。很多新手误区觉得加个事务、判断一下库存就能解决并发问题。实际上数据库事务只能保证数据一致性无法解决并发争抢问题。集群部署下普通锁全部失效这也是为什么必须用分布式锁的核心原因。二、Redisson 核心优势为什么不用原生Redis锁网上很多教程用 Redis 的 SETNX 手写分布式锁我非常不推荐。手写锁坑非常多锁超时释放、锁误删、主从异步复制丢锁、无法续期等问题线上极易出事故。而 Redisson 是官方推荐的企业级分布式锁框架完美解决了以上所有问题自带看门狗续期机制、可重入锁、公平锁、读写锁适配集群、哨兵、单机各种Redis架构稳定性拉满是目前生产环境最优解。三、项目依赖与环境配置首先引入Redisson核心依赖适配SpringBoot3.xMaven依赖如下dependency groupIdorg.redisson/groupId artifactIdredisson-spring-boot-starter/artifactId version3.23.5/version /dependencyyml配置文件直接连接本地或线上Redisspring: redis: host: 127.0.0.1 port: 6379 password: database: 0四、Redisson分布式锁实战代码解决超卖下面是我线上落地的完整业务代码模拟库存扣减、下单流程通过 Redisson 可重入锁保证并发互斥彻底杜绝超卖。import org.redisson.RLock; import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.concurrent.TimeUnit; RestController public class OrderController { Autowired private RedissonClient redissonClient; Autowired private RedisTemplateString, String redisTemplate; // 库存锁Key保证同一商品唯一锁 private static final String STOCK_LOCK_KEY lock:stock:001; GetMapping(/create/order) public String createOrder(){ // 获取分布式可重入锁 RLock lock redissonClient.getLock(STOCK_LOCK_KEY); try { // 尝试加锁等待3秒锁自动释放时间30秒 boolean tryLock lock.tryLock(3, 30, TimeUnit.SECONDS); if (!tryLock){ return 系统繁忙请稍后重试; } // 查询库存 String stockStr redisTemplate.opsForValue().get(goods:stock:001); int stock Integer.parseInt(stockStr); // 库存判断 if (stock 0){ return 商品库存不足; } // 扣减库存 redisTemplate.opsForValue().decrement(goods:stock:001); // 此处可拓展生成订单、写入数据库、消息通知等业务逻辑 System.out.println(订单创建成功剩余库存 (stock - 1)); return 下单成功; } catch (InterruptedException e) { Thread.currentThread().interrupt(); return 下单失败; } finally { // 释放锁必须放在finally防止死锁 if (lock.isHeldByCurrentThread()){ lock.unlock(); } } } }这段代码是生产通用标准写法加锁、超时时间、锁释放逻辑齐全杜绝死锁和五、核心原理简单解读很多人只会用不会原理我简单通俗讲一下。Redisson 的 tryLock 方法会通过Lua脚本保证加锁原子性避免并发加锁冲突。同时内置看门狗机制如果业务执行超时未释放锁会自动续期防止业务没执行完锁提前释放导致并发问题。finally 释放锁是关键必须判断当前线程持有锁才释放防止别的线程误删锁这是手写锁最容易踩的坑。六、压测效果对比我用JMeter压测对比非常明显未加分布式锁前1000并发请求直接超卖接入Redisson分布式锁后无论多高并发库存精准扣减完全杜绝超卖问题数据一致性100%没问题。七、生产落地避坑总结第一锁的Key一定要精准按商品维度加锁不能全局单锁不然会导致接口性能雪崩第二务必设置超时时间避免Redis宕机导致死锁第三禁止手动过期释放依赖Redisson自动机制更安全。总结在分布式集群场景下本地锁完全无法解决并发超卖问题Redisson分布式锁是目前最简单、最稳定、零BUG的解决方案。本文代码可以直接用于秒杀、限量活动、库存扣减等所有并发场景适配绝大多数SpringBoot电商项目帮大家彻底解决线上订单超卖的头疼问题。Wap.flGwc.cN/Article/44105.shtmlWap.flGwc.cN/Article/90178.shtmlWap.flGwc.cN/Article/30388.shtmlWap.flGwc.cN/Article/50566.shtmlWap.flGwc.cN/Article/94872.shtmlWap.flGwc.cN/Article/29519.shtmlWap.flGwc.cN/Article/89715.shtmlWap.flGwc.cN/Article/40030.shtmlWap.flGwc.cN/Article/57046.shtmlWap.flGwc.cN/Article/38519.shtmlWap.flGwc.cN/Article/34276.shtmlWap.flGwc.cN/Article/89853.shtmlWap.flGwc.cN/Article/01077.shtmlWap.flGwc.cN/Article/31023.shtmlWap.flGwc.cN/Article/47954.shtmlWap.flGwc.cN/Article/56587.shtmlWap.flGwc.cN/Article/99060.shtmlWap.flGwc.cN/Article/69659.shtmlWap.flGwc.cN/Article/71247.shtmlWap.flGwc.cN/Article/64834.shtmlWap.flGwc.cN/Article/61679.shtmlWap.flGwc.cN/Article/25479.shtmlWap.flGwc.cN/Article/85199.shtmlWap.flGwc.cN/Article/84729.shtmlWap.flGwc.cN/Article/68684.shtmlWap.flGwc.cN/Article/52175.shtmlWap.flGwc.cN/Article/70121.shtmlWap.flGwc.cN/Article/15361.shtmlWap.flGwc.cN/Article/82201.shtmlWap.flGwc.cN/Article/69418.shtmlWap.flGwc.cN/Article/95102.shtmlWap.flGwc.cN/Article/67324.shtmlWap.flGwc.cN/Article/76672.shtmlWap.flGwc.cN/Article/99720.shtmlWap.flGwc.cN/Article/93594.shtmlWap.flGwc.cN/Article/86156.shtmlWap.flGwc.cN/Article/06531.shtmlWap.flGwc.cN/Article/97860.shtmlWap.flGwc.cN/Article/04425.shtmlWap.flGwc.cN/Article/34623.shtmlWap.flGwc.cN/Article/89129.shtmlWap.flGwc.cN/Article/75928.shtmlWap.flGwc.cN/Article/98177.shtmlWap.flGwc.cN/Article/07393.shtmlWap.flGwc.cN/Article/34656.shtmlWap.flGwc.cN/Article/49098.shtmlWap.flGwc.cN/Article/90539.shtmlWap.flGwc.cN/Article/10151.shtmlWap.flGwc.cN/Article/56289.shtmlWap.flGwc.cN/Article/78873.shtmlWap.flGwc.cN/Article/65970.shtmlWap.flGwc.cN/Article/83881.shtmlWap.flGwc.cN/Article/66943.shtmlWap.flGwc.cN/Article/75178.shtmlWap.flGwc.cN/Article/95147.shtmlWap.flGwc.cN/Article/66290.shtmlWap.flGwc.cN/Article/91013.shtmlWap.flGwc.cN/Article/29723.shtmlWap.flGwc.cN/Article/11102.shtmlWap.flGwc.cN/Article/19486.shtmlWap.flGwc.cN/Article/99465.shtmlWap.flGwc.cN/Article/28959.shtmlWap.flGwc.cN/Article/00236.shtmlWap.flGwc.cN/Article/14426.shtmlWap.flGwc.cN/Article/87238.shtmlWap.flGwc.cN/Article/90470.shtmlWap.flGwc.cN/Article/77462.shtmlWap.flGwc.cN/Article/65698.shtmlWap.flGwc.cN/Article/74104.shtmlWap.flGwc.cN/Article/66870.shtmlWap.flGwc.cN/Article/79657.shtmlWap.flGwc.cN/Article/13722.shtmlWap.flGwc.cN/Article/17680.shtmlWap.flGwc.cN/Article/47867.shtmlWap.flGwc.cN/Article/57882.shtmlWap.flGwc.cN/Article/12980.shtmlWap.flGwc.cN/Article/40117.shtmlWap.flGwc.cN/Article/09385.shtmlWap.flGwc.cN/Article/75808.shtmlWap.flGwc.cN/Article/89109.shtmlWap.flGwc.cN/Article/00398.shtmlWap.flGwc.cN/Article/72230.shtmlWap.flGwc.cN/Article/08830.shtmlWap.flGwc.cN/Article/16429.shtmlWap.flGwc.cN/Article/83013.shtmlWap.flGwc.cN/Article/98230.shtmlWap.flGwc.cN/Article/33744.shtmlWap.flGwc.cN/Article/41459.shtmlWap.flGwc.cN/Article/37499.shtmlWap.flGwc.cN/Article/92157.shtmlWap.flGwc.cN/Article/33054.shtmlWap.flGwc.cN/Article/41319.shtmlWap.flGwc.cN/Article/07998.shtmlWap.flGwc.cN/Article/84488.shtmlWap.flGwc.cN/Article/71543.shtmlWap.flGwc.cN/Article/12919.shtmlWap.flGwc.cN/Article/84647.shtmlWap.flGwc.cN/Article/26808.shtmlWap.flGwc.cN/Article/31833.shtmlWap.flGwc.cN/Article/02531.shtmlWap.flGwc.cN/Article/21925.shtmlWap.flGwc.cN/Article/27195.shtmlWap.flGwc.cN/Article/84307.shtmlWap.flGwc.cN/Article/79228.shtmlWap.flGwc.cN/Article/61529.shtmlWap.flGwc.cN/Article/36499.shtmlWap.flGwc.cN/Article/26157.shtmlWap.flGwc.cN/Article/29924.shtmlWap.flGwc.cN/Article/42862.shtmlWap.flGwc.cN/Article/85410.shtmlWap.flGwc.cN/Article/56446.shtmlWap.flGwc.cN/Article/64411.shtmlWap.flGwc.cN/Article/92172.shtmlWap.flGwc.cN/Article/37158.shtmlWap.flGwc.cN/Article/96064.shtmlWap.flGwc.cN/Article/60603.shtmlWap.flGwc.cN/Article/10756.shtmlWap.flGwc.cN/Article/60967.shtmlWap.flGwc.cN/Article/64714.shtmlWap.flGwc.cN/Article/39353.shtmlWap.flGwc.cN/Article/26855.shtmlWap.flGwc.cN/Article/38208.shtmlWap.flGwc.cN/Article/34226.shtmlWap.flGwc.cN/Article/36977.shtmlWap.flGwc.cN/Article/64185.shtmlWap.flGwc.cN/Article/84503.shtmlWap.flGwc.cN/Article/25400.shtmlWap.flGwc.cN/Article/48564.shtmlWap.flGwc.cN/Article/06884.shtmlWap.flGwc.cN/Article/41846.shtmlWap.flGwc.cN/Article/92336.shtmlWap.flGwc.cN/Article/15314.shtmlWap.flGwc.cN/Article/62658.shtmlWap.flGwc.cN/Article/97302.shtmlWap.flGwc.cN/Article/87756.shtmlWap.flGwc.cN/Article/11390.shtmlWap.flGwc.cN/Article/38857.shtmlWap.flGwc.cN/Article/68655.shtmlWap.flGwc.cN/Article/04127.shtmlWap.flGwc.cN/Article/66512.shtmlWap.flGwc.cN/Article/89601.shtmlWap.flGwc.cN/Article/62779.shtmlWap.flGwc.cN/Article/10035.shtmlWap.flGwc.cN/Article/47323.shtmlWap.flGwc.cN/Article/27367.shtmlWap.flGwc.cN/Article/66559.shtmlWap.flGwc.cN/Article/20073.shtmlWap.flGwc.cN/Article/93654.shtmlWap.flGwc.cN/Article/76812.shtmlWap.flGwc.cN/Article/43354.shtmlWap.flGwc.cN/Article/53020.shtmlWap.flGwc.cN/Article/12080.shtmlWap.flGwc.cN/Article/23843.shtmlWap.flGwc.cN/Article/43742.shtmlWap.flGwc.cN/Article/42706.shtmlWap.flGwc.cN/Article/61076.shtmlWap.flGwc.cN/Article/04843.shtmlWap.flGwc.cN/Article/97643.shtmlWap.flGwc.cN/Article/17899.shtmlWap.flGwc.cN/Article/07527.shtmlWap.flGwc.cN/Article/86424.shtmlWap.flGwc.cN/Article/29830.shtmlWap.flGwc.cN/Article/69978.shtmlWap.flGwc.cN/Article/79810.shtmlWap.flGwc.cN/Article/65503.shtmlWap.flGwc.cN/Article/98394.shtmlWap.flGwc.cN/Article/35780.shtmlWap.flGwc.cN/Article/61347.shtmlWap.flGwc.cN/Article/23772.shtmlWap.flGwc.cN/Article/78331.shtmlWap.flGwc.cN/Article/41599.shtmlWap.flGwc.cN/Article/35222.shtmlWap.flGwc.cN/Article/52122.shtmlWap.flGwc.cN/Article/71459.shtmlWap.flGwc.cN/Article/76333.shtmlWap.flGwc.cN/Article/34107.shtmlWap.flGwc.cN/Article/82378.shtmlWap.flGwc.cN/Article/38953.shtmlWap.flGwc.cN/Article/50779.shtmlWap.flGwc.cN/Article/46291.shtmlWap.flGwc.cN/Article/36843.shtmlWap.flGwc.cN/Article/67308.shtmlWap.flGwc.cN/Article/47647.shtmlWap.flGwc.cN/Article/95125.shtmlWap.flGwc.cN/Article/64135.shtmlWap.flGwc.cN/Article/22642.shtmlWap.flGwc.cN/Article/29900.shtmlWap.flGwc.cN/Article/64132.shtmlWap.flGwc.cN/Article/87064.shtmlWap.flGwc.cN/Article/06068.shtmlWap.flGwc.cN/Article/55989.shtmlWap.flGwc.cN/Article/70827.shtmlWap.flGwc.cN/Article/25475.shtmlWap.flGwc.cN/Article/57834.shtmlWap.flGwc.cN/Article/89061.shtmlWap.flGwc.cN/Article/16740.shtmlWap.flGwc.cN/Article/43642.shtmlWap.flGwc.cN/Article/31422.shtmlWap.flGwc.cN/Article/27691.shtmlWap.flGwc.cN/Article/31124.shtmlWap.flGwc.cN/Article/64356.shtmlWap.flGwc.cN/Article/44550.shtmlWap.flGwc.cN/Article/77366.shtmlWap.flGwc.cN/Article/72653.shtmlWap.flGwc.cN/Article/90472.shtmlWap.flGwc.cN/Article/91216.shtmlWap.flGwc.cN/Article/31647.shtmlWap.flGwc.cN/Article/31082.shtmlWap.flGwc.cN/Article/96133.shtmlWap.flGwc.cN/Article/43228.shtmlWap.flGwc.cN/Article/01433.shtmlWap.flGwc.cN/Article/58655.shtmlWap.flGwc.cN/Article/90689.shtmlWap.flGwc.cN/Article/46759.shtmlWap.flGwc.cN/Article/79954.shtmlWap.flGwc.cN/Article/47691.shtmlWap.flGwc.cN/Article/85927.shtmlWap.flGwc.cN/Article/28192.shtmlWap.flGwc.cN/Article/48691.shtmlWap.flGwc.cN/Article/05638.shtmlWap.flGwc.cN/Article/96723.shtmlWap.flGwc.cN/Article/26092.shtmlWap.flGwc.cN/Article/30905.shtmlWap.flGwc.cN/Article/58063.shtmlWap.flGwc.cN/Article/34237.shtmlWap.flGwc.cN/Article/02079.shtmlWap.flGwc.cN/Article/28293.shtmlWap.flGwc.cN/Article/38204.shtmlWap.flGwc.cN/Article/00542.shtmlWap.flGwc.cN/Article/21228.shtmlWap.flGwc.cN/Article/00038.shtmlWap.flGwc.cN/Article/54266.shtmlWap.flGwc.cN/Article/46461.shtmlWap.flGwc.cN/Article/01968.shtmlWap.flGwc.cN/Article/37361.shtmlWap.flGwc.cN/Article/34725.shtmlWap.flGwc.cN/Article/63037.shtmlWap.flGwc.cN/Article/47141.shtmlWap.flGwc.cN/Article/90073.shtmlWap.flGwc.cN/Article/08565.shtmlWap.flGwc.cN/Article/70581.shtmlWap.flGwc.cN/Article/03873.shtmlWap.flGwc.cN/Article/18771.shtmlWap.flGwc.cN/Article/63026.shtmlWap.flGwc.cN/Article/51381.shtmlWap.flGwc.cN/Article/59776.shtmlWap.flGwc.cN/Article/89128.shtmlWap.flGwc.cN/Article/97700.shtmlWap.flGwc.cN/Article/34084.shtmlWap.flGwc.cN/Article/30627.shtmlWap.flGwc.cN/Article/77485.shtmlWap.flGwc.cN/Article/94673.shtmlWap.flGwc.cN/Article/43371.shtmlWap.flGwc.cN/Article/79301.shtmlWap.flGwc.cN/Article/80299.shtmlWap.flGwc.cN/Article/82730.shtmlWap.flGwc.cN/Article/56203.shtmlWap.flGwc.cN/Article/36165.shtmlWap.flGwc.cN/Article/31733.shtmlWap.flGwc.cN/Article/44965.shtmlWap.flGwc.cN/Article/54361.shtmlWap.flGwc.cN/Article/09735.shtmlWap.flGwc.cN/Article/02959.shtmlWap.flGwc.cN/Article/12687.shtmlWap.flGwc.cN/Article/45530.shtmlWap.flGwc.cN/Article/41760.shtmlWap.flGwc.cN/Article/64150.shtmlWap.flGwc.cN/Article/00518.shtmlWap.flGwc.cN/Article/43058.shtmlWap.flGwc.cN/Article/92054.shtmlWap.flGwc.cN/Article/33462.shtmlWap.flGwc.cN/Article/14732.shtmlWap.flGwc.cN/Article/88567.shtmlWap.flGwc.cN/Article/17594.shtmlWap.flGwc.cN/Article/72576.shtmlWap.flGwc.cN/Article/22683.shtmlWap.flGwc.cN/Article/75762.shtmlWap.flGwc.cN/Article/83884.shtmlWap.flGwc.cN/Article/58797.shtmlWap.flGwc.cN/Article/28734.shtmlWap.flGwc.cN/Article/59608.shtmlWap.flGwc.cN/Article/54863.shtmlWap.flGwc.cN/Article/44503.shtmlWap.flGwc.cN/Article/16208.shtmlWap.flGwc.cN/Article/40889.shtmlWap.flGwc.cN/Article/11925.shtmlWap.flGwc.cN/Article/84430.shtmlWap.flGwc.cN/Article/34972.shtmlWap.flGwc.cN/Article/74305.shtmlWap.flGwc.cN/Article/66466.shtmlWap.flGwc.cN/Article/82657.shtmlWap.flGwc.cN/Article/44049.shtmlWap.flGwc.cN/Article/35312.shtmlWap.flGwc.cN/Article/43916.shtmlWap.flGwc.cN/Article/18905.shtmlWap.flGwc.cN/Article/84175.shtmlWap.flGwc.cN/Article/26265.shtmlWap.flGwc.cN/Article/54501.shtmlWap.flGwc.cN/Article/63714.shtmlWap.flGwc.cN/Article/60034.shtmlWap.flGwc.cN/Article/77542.shtmlWap.flGwc.cN/Article/13590.shtmlWap.flGwc.cN/Article/39333.shtmlWap.flGwc.cN/Article/43578.shtmlWap.flGwc.cN/Article/55271.shtmlWap.flGwc.cN/Article/23868.shtmlWap.flGwc.cN/Article/84614.shtmlWap.flGwc.cN/Article/78302.shtmlWap.flGwc.cN/Article/13837.shtmlWap.flGwc.cN/Article/37119.shtmlWap.flGwc.cN/Article/52088.shtmlWap.flGwc.cN/Article/27080.shtmlWap.flGwc.cN/Article/42216.shtmlWap.flGwc.cN/Article/61021.shtmlWap.flGwc.cN/Article/11869.shtmlWap.flGwc.cN/Article/87308.shtmlWap.flGwc.cN/Article/53630.shtmlWap.flGwc.cN/Article/42579.shtmlWap.flGwc.cN/Article/47989.shtmlWap.flGwc.cN/Article/45156.shtmlWap.flGwc.cN/Article/53883.shtmlWap.flGwc.cN/Article/13093.shtmlWap.flGwc.cN/Article/98369.shtmlWap.flGwc.cN/Article/31127.shtmlWap.flGwc.cN/Article/32093.shtmlWap.flGwc.cN/Article/42685.shtmlWap.flGwc.cN/Article/08808.shtmlWap.flGwc.cN/Article/85085.shtmlWap.flGwc.cN/Article/84722.shtmlWap.flGwc.cN/Article/98144.shtmlWap.flGwc.cN/Article/42485.shtmlWap.flGwc.cN/Article/41699.shtmlWap.flGwc.cN/Article/82242.shtmlWap.flGwc.cN/Article/93554.shtmlWap.flGwc.cN/Article/64714.shtmlWap.flGwc.cN/Article/02413.shtmlWap.flGwc.cN/Article/86303.shtmlWap.flGwc.cN/Article/26069.shtmlWap.flGwc.cN/Article/23304.shtmlWap.flGwc.cN/Article/44165.shtmlWap.flGwc.cN/Article/54000.shtmlWap.flGwc.cN/Article/26436.shtmlWap.flGwc.cN/Article/51094.shtmlWap.flGwc.cN/Article/57415.shtmlWap.flGwc.cN/Article/86978.shtmlWap.flGwc.cN/Article/40465.shtmlWap.flGwc.cN/Article/13487.shtmlWap.flGwc.cN/Article/56677.shtmlWap.flGwc.cN/Article/98721.shtmlWap.flGwc.cN/Article/36771.shtmlWap.flGwc.cN/Article/06300.shtmlWap.flGwc.cN/Article/01875.shtmlWap.flGwc.cN/Article/21171.shtmlWap.flGwc.cN/Article/11961.shtmlWap.flGwc.cN/Article/72858.shtmlWap.flGwc.cN/Article/08042.shtmlWap.flGwc.cN/Article/63577.shtmlWap.flGwc.cN/Article/42309.shtmlWap.flGwc.cN/Article/22527.shtml