Skip to content

Commit 7e66fb1

Browse files
committed
feat:添加业务锁
1 parent b6798f8 commit 7e66fb1

16 files changed

Lines changed: 3612 additions & 19 deletions

README.md

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,44 @@ console.log(`总计: ${result.totals?.total}, 共 ${result.totals?.totalPages}
286286
- ✅ 文档级别锁(16倍并发提升)
287287
- ✅ 重试、超时、监控
288288
289+
#### **业务级分布式锁(v1.4.0 新增)** 🆕
290+
```javascript
291+
// 自动管理锁生命周期(推荐)
292+
await db.withLock('inventory:SKU123', async () => {
293+
// 查询、计算、多表更新 - 整个流程串行执行
294+
const product = await inventory.findOne({ sku: 'SKU123' });
295+
const price = calculatePrice(product, user);
296+
await inventory.updateOne({ sku: 'SKU123' }, { $inc: { stock: -1 } });
297+
await orders.insertOne({ userId, price });
298+
});
299+
300+
// 定时任务防重(多实例环境)
301+
const lock = await db.tryAcquireLock('cron:daily-report');
302+
if (lock) {
303+
try {
304+
await generateDailyReport();
305+
} finally {
306+
await lock.release();
307+
}
308+
}
309+
```
310+
311+
**特性**
312+
- ✅ 基于 Redis 的分布式锁
313+
- ✅ 自动重试机制(可配置)
314+
-TTL 自动过期,防止死锁
315+
- ✅ 支持锁续期
316+
- ✅ Redis 断连降级策略
317+
- ✅ 内置统计监控
318+
319+
**适用场景**
320+
- ✅ 复杂订单创建(查询→计算→多表更新)
321+
- ✅ 定时任务防重(多实例环境)
322+
- ✅ 外部 API 调用后更新数据库
323+
- ✅ 库存扣减(复杂业务逻辑)
324+
325+
**文档**:[完整 API 文档](./docs/business-lock.md) | [示例代码](./examples/business-lock.examples.js)
326+
289327
#### **链式调用 API100% 完成)**
290328
- ✅ sort, limit, skip, projection, hint, collation 等所有 MongoDB 游标方法
291329
@@ -1253,6 +1291,7 @@ const db = new MonSQLize({
12531291
- 📖 [完整 API 文档索引](./docs/INDEX.md)
12541292
- 📖 [MongoDB 原生 vs monSQLize 对比](./docs/mongodb-native-vs-extensions.md)
12551293
- 📖 [事务使用指南](./docs/transaction.md)
1294+
- 📖 [**业务级分布式锁**](./docs/business-lock.md) 🆕 v1.4.0
12561295
- 📖 [分布式部署指南](./docs/distributed-deployment.md)
12571296
- 📖 [性能优化指南](./docs/transaction-optimizations.md)
12581297
@@ -1273,7 +1312,7 @@ const db = new MonSQLize({
12731312
- [Schema 验证](./docs/validation.md) | [集合管理](./docs/collection-mgmt.md)
12741313
12751314
**其他功能**:
1276-
- [索引管理](./docs/indexes.md) | [聚合查询](./docs/aggregate.md)
1315+
- [索引管理](./docs/create-index.md) | [聚合查询](./docs/aggregate.md)
12771316
- [缓存系统](./docs/cache.md) | [链式调用](./docs/chaining-api.md)
12781317
12791318
### 示例代码

STATUS.md

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
# monSQLize 需求状态追踪
22

33
> **说明**: 追踪所有版本的需求状态(未来 + 历史)
4-
> **最后更新**: 2025-12-15
5-
> **文档版本**: 2.1(符合 AI 开发规范 v4.17
4+
> **最后更新**: 2025-12-18
5+
> **文档版本**: 2.2(符合 AI 开发规范 v4.23
66
77
---
88

99
## 📑 目录导航
1010

1111
- [发布计划](#发布计划)
12-
- [v1.4.0 - 📋 规划中](#v140)
12+
- [v1.4.0 - 📋 规划中(业务锁)](#v140-1)
1313
- [v1.5.0 - 📋 规划中](#v150)
1414
- [v1.6.0 - 📋 规划中](#v160)
15+
- [v1.4.0-cancelled - ❌ 已取消(短ID)](#v140)
1516
- [v1.2.0 - 🚧 开发中](#v120)
1617
- [v1.3.0 - ✅ 已完成](#v130)
1718
- [v1.1.0 - ✅ 已发布](#v110)
@@ -26,9 +27,10 @@
2627

2728
| 版本 | 发布状态 | 发布日期 | 需求数 | 进度 |
2829
|------|---------|---------|--------|------|
30+
| [v1.4.0](#v140-1) | 📋 规划中 | 2026-01-15 | 1 | 0/1 未开始 |
2931
| [v1.5.0](#v150) | 📋 规划中 | 2026-02-28 | 1 | 0/1 未开始 |
3032
| [v1.6.0](#v160) | 📋 规划中 | 2026-03-31 | 1 | 0/1 未开始 |
31-
| [v1.4.0](#v140) | ❌ 已取消 | 2025-12-16 | 1 | 已取消 |
33+
| [v1.4.0-cancelled](#v140) | ❌ 已取消 | 2025-12-16 | 1 | 已取消 |
3234
| [v1.3.0](#v130) | ✅ 已完成 | 2025-12-12 | 1 | 1/1 完成 |
3335
| [v1.2.0](#v120) | 🚧 开发中 | 2025-12-15 | 3 | 3/3 进行中 |
3436
| [v1.1.0](#v110) | ✅ 已发布 | 2025-12-03 | 1 | 1/1 完成 |
@@ -37,7 +39,32 @@
3739

3840
---
3941

40-
## v1.4.0
42+
## v1.4.0 {#v140-1}
43+
44+
**发布状态**: 📋 规划中
45+
**发布日期**: 2026-01-15
46+
**版本类型**: 次版本(MINOR)
47+
48+
| 需求标题 | 状态 | 优先级 | 详细 |
49+
|---------|------|--------|------|
50+
| 业务级分布式锁(withLock) | 📋 规划中 | P1 | [方案](./plans/requirements/req-business-lock-v1.4.md) |
51+
52+
**进度**: 1个需求 | 0个已完成
53+
54+
**变更摘要**:
55+
- `withLock()` API:自动管理锁的获取和释放
56+
- `acquireLock()` / `tryAcquireLock()`:手动锁管理
57+
- 复用已有 Redis 连接(分布式缓存)
58+
-`withTransaction()` 无缝配合
59+
60+
**设计理念**:
61+
- 业务锁本质是保护数据库操作,放在数据库增强层职责匹配
62+
- 用户不需要在框架层额外引入锁库
63+
- 复用 `DistributedCacheLockManager` 现有代码
64+
65+
---
66+
67+
## v1.4.0-cancelled {#v140}
4168

4269
**发布状态**: ❌ 已取消
4370
**取消日期**: 2025-12-16

docs/INDEX.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
| [connection.md](connection.md) | 连接管理和配置 |
1313
| [cache.md](cache.md) | 缓存系统(LRU + TTL) |
1414
| [transaction.md](transaction.md) | 事务管理(自动重试、缓存锁) |
15+
| [business-lock.md](business-lock.md) | **业务级分布式锁(v1.4.0)🆕** |
1516
| [transaction-optimizations.md](transaction-optimizations.md) | 事务优化策略 |
1617
| [distributed-deployment.md](distributed-deployment.md) | **分布式部署指南(多实例缓存一致性)⭐** |
1718
| [events.md](events.md) | 事件系统 |

0 commit comments

Comments
 (0)