news 2026/5/30 20:31:30

基于 SpringBoot + Redis (Lettuce) + RabbitMQ 实现「Redis 预扣库存 + 异步同步数据库」

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 SpringBoot + Redis (Lettuce) + RabbitMQ 实现「Redis 预扣库存 + 异步同步数据库」

一、整体流程回顾

  1. 前端下单请求进来,先查 Redis 库存
  2. 执行DECR原子扣减:
    • 结果 < 0 → 库存不足,直接返回失败
    • 结果 ≥ 0 → 扣减成功,发送消息到 MQ
  3. MQ 消费者消费消息,异步更新数据库库存
  4. 配套:消息重试、定时对账、DB 乐观锁防重复扣减

二、核心依赖(pom.xml 关键)

<!-- Spring Data Redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- RabbitMQ --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <!-- MyBatis/MyBatis-Plus 操作DB --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>

三、常量 & MQ 队列配置

1. 常量类

public class StockConstant { // Redis 库存 key 前缀 public static final String REDIS_STOCK_PREFIX = "product:stock:"; // MQ 队列名称 public static final String STOCK_SYNC_QUEUE = "stock.sync.queue"; }

2. RabbitMQ 配置(队列、交换机、绑定)

import org.springframework.amqp.core.Queue; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class RabbitConfig { @Bean public Queue stockSyncQueue() { // 持久化队列,宕机不丢失消息 return new Queue(StockConstant.STOCK_SYNC_QUEUE, true); } }

四、库存实体 & Mapper(DB 层)

1. 商品库存实体(带乐观锁)

import com.baomidou.mybatisplus.annotation.Version; import lombok.Data; @Data public class ProductStock { private Long id; // 商品ID private Long productId; // 数据库真实库存 private Integer stock; // 乐观锁版本号,防止异步重复扣减 @Version private Integer version; }

2. Map

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 20:18:09

如何轻松解锁QQ音乐加密文件:qmcdump完整使用指南

如何轻松解锁QQ音乐加密文件&#xff1a;qmcdump完整使用指南 【免费下载链接】qmcdump 一个简单的QQ音乐解码&#xff08;qmcflac/qmc0/qmc3 转 flac/mp3&#xff09;&#xff0c;仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否曾经…

作者头像 李华
网站建设 2026/5/30 20:17:30

3步实现智能JSON转Java对象:GsonFormatPlus高效开发指南

3步实现智能JSON转Java对象&#xff1a;GsonFormatPlus高效开发指南 【免费下载链接】GsonFormatPlus GsonFormatPlus 项目地址: https://gitcode.com/gh_mirrors/gs/GsonFormatPlus 在现代Java开发中&#xff0c;JSON数据解析是每个开发者都会遇到的常规任务。手动编写…

作者头像 李华