[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81666":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":14,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":15,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":16,"fork":16,"defaultBranch":17,"hasWiki":18,"hasPages":16,"topics":19,"createdAt":9,"pushedAt":9,"updatedAt":20,"readmeContent":21,"aiSummary":22,"trendingCount":14,"starSnapshotCount":14,"syncStatus":23,"lastSyncTime":24,"discoverSource":25},81666,"yunqi-youxiang","ZJunCher\u002Fyunqi-youxiang","ZJunCher","基于 Spring Boot 的本地生活服务平台后端项目，实践 Redis 缓存、秒杀、限流、Kafka 异步下单等高并发方案，适合新手学习 Java 后端实战。",null,"Java",46,5,4,0,39.33,false,"main",true,[],"2026-06-12 04:01:34","# 云栖优享\n\n云栖优享是一个基于 Spring Boot 的本地生活服务平台后端项目，围绕商铺浏览、优惠券秒杀、用户互动、签到、关注、达人探店等场景展开，并重点实践了 Redis 缓存优化、Lua 原子校验、Kafka 异步下单、滑动窗口限流、多级缓存、超时关单等高并发业务方案。\n\n## 项目定位\n\n本项目是一个面向 Java 后端学习与实践的开源项目，前身参考了经典的黑马点评业务场景。在此基础上，我围绕秒杀高并发、缓存一致性、订单超时关单、接口限流、多级缓存、消息队列异步化等方向进行了持续优化和扩展，并将代码整理开源，方便大家交流学习、理解业务场景和实践后端核心技术。\n\n## 项目亮点\n\n- **优惠券秒杀**：使用 Redis + Lua 完成库存校验、一人一单校验和库存预扣，降低 MySQL 在秒杀入口的压力。\n- **异步下单**：秒杀资格判断成功后发送 Kafka 消息，由消费者异步扣减 MySQL 库存并创建订单。\n- **订单关单**：定时扫描超时未支付订单，使用乐观锁关闭订单并释放 MySQL\u002FRedis 库存。\n- **缓存优化**：使用缓存空值解决缓存穿透，使用逻辑过期解决热点 Key 缓存击穿。\n- **多级缓存**：使用 Caffeine 本地缓存 + Redis 缓存，降低热点店铺数据对 Redis 的访问压力。\n- **数据一致性**：更新数据库后删除缓存，删除失败时通过 Kafka 补偿重试，并配合 TTL 兜底。\n- **接口限流**：基于自定义注解、AOP、Redis ZSet 和 Lua 实现滑动窗口限流，支持全局、用户、IP 维度。\n\n## 技术栈\n\n- Java\n- Spring Boot\n- MyBatis-Plus\n- MySQL\n- Redis \u002F Redisson\n- Kafka\n- Caffeine\n- Lua\n- Hutool\n\n## 核心模块\n\n```text\nsrc\u002Fmain\u002Fjava\u002Fcom\u002Fyqyx\n├── controller      接口层\n├── service         业务接口\n├── service\u002Fimpl    业务实现\n├── mapper          MyBatis-Plus Mapper\n├── entity          数据实体\n├── dto             数据传输对象\n├── config          Spring 配置\n├── limiter         接口限流\n└── utils           Redis、缓存、登录态、常量等工具类\n```\n\n## 本地运行\n\n### 1. 准备环境\n\n请先启动以下服务：\n\n- MySQL\n- Redis\n- Kafka\n\n### 2. 初始化数据库\n\n导入 SQL 文件：\n\n```text\nsrc\u002Fmain\u002Fresources\u002Fdb\u002Fyqyx.sql\n```\n\n建议创建数据库 `yunqi_youxiang`。如果你使用其他数据库名，请同步修改 `application.yaml` 中的 datasource 配置。\n\n### 3. 修改配置\n\n根据本地环境修改：\n\n```yaml\nspring:\n  datasource:\n    url: jdbc:mysql:\u002F\u002F127.0.0.1:3306\u002Fyunqi_youxiang?useSSL=false&serverTimezone=UTC\n    username: root\n    password: 123\n  redis:\n    host: 192.168.150.101\n    port: 6379\n    password: 123321\n  kafka:\n    bootstrap-servers: 127.0.0.1:9092\n```\n\n### 4. 编译运行\n\n```bash\nmvn clean package -DskipTests\nmvn spring-boot:run\n```\n\n默认端口：\n\n```text\nhttp:\u002F\u002Flocalhost:8081\n```\n\n## 常用接口\n\n| 功能 | 方法 | 路径 |\n| --- | --- | --- |\n| 发送验证码 | POST | `\u002Fuser\u002Fcode` |\n| 用户登录 | POST | `\u002Fuser\u002Flogin` |\n| 查询店铺详情 | GET | `\u002Fshop\u002F{id}` |\n| 查询店铺分类 | GET | `\u002Fshop-type\u002Flist` |\n| 查询店铺优惠券 | GET | `\u002Fvoucher\u002Flist\u002F{shopId}` |\n| 秒杀优惠券 | POST | `\u002Fvoucher-order\u002Fseckill\u002F{id}` |\n| 查询我的订单 | GET | `\u002Fvoucher-order\u002Fof\u002Fme` |\n| 支付成功回调模拟 | POST | `\u002Fvoucher-order\u002Fpay\u002Fsuccess\u002F{id}` |\n| 发布探店笔记 | POST | `\u002Fblog` |\n| 查询热门笔记 | GET | `\u002Fblog\u002Fhot` |\n| 每日签到 | POST | `\u002Fuser\u002Fsign` |\n\n## 项目说明\n\n本项目适合作为 Java 后端高并发业务实践项目，重点关注秒杀、缓存、限流、消息队列、订单状态流转和数据一致性等后端核心能力。项目中的部分配置需要根据本地 MySQL、Redis、Kafka 环境进行调整后再运行。\n","云栖优享是一个基于 Spring Boot 的本地生活服务平台后端项目，旨在提供商铺浏览、优惠券秒杀、用户互动等功能。项目重点实践了 Redis 缓存优化、Lua 原子校验、Kafka 异步下单、滑动窗口限流、多级缓存、超时关单等高并发业务方案。通过使用 Redis + Lua 实现库存校验和一人一单校验，结合 Kafka 异步处理订单创建，有效提升了系统的并发处理能力。此外，项目还实现了缓存穿透、缓存击穿的解决方案，并通过 Caffeine 本地缓存与 Redis 结合的方式降低了热点数据对 Redis 的访问压力。该项目适合 Java 后端新手学习高并发场景下的实战技术，包括缓存一致性、接口限流、消息队列异步化等关键点。",2,"2026-06-11 04:05:54","CREATED_QUERY"]