ai-landing-tutorial

分布式锁规范(通用 rule 模板)

分布式锁规范:Redisson 实现、锁粒度、超时、释放。放 .claude/rules/distributed-lock.md,AI 写并发控制代码时自动遵守。

基本原则

标准模板

@Autowired
private RedissonUtils redissonUtils;

// ✏️ 替换业务 key:租户 + 用户 + 业务唯一标识
RLock lock = redissonUtils.getLock("lock:" + tenantId + ":" + userId + ":" + entityId);
boolean acquired = false;
try {
    // waitTime=10s(等待获锁时间), leaseTime=300s(持有锁最长时间)
    acquired = lock.tryLock(10, 1, 300, TimeUnit.SECONDS);
    if (!acquired) {
        throw new BizException("系统繁忙,请稍后重试");  // ✏️ 替换为项目异常类
    }
    // ---- 业务逻辑 ----

} catch (InterruptedException e) {
    log.error("====== InterruptedException =======", e);
    Thread.currentThread().interrupt();
    throw new BizException("获取锁被中断");
} finally {
    if (acquired && lock.isHeldByCurrentThread()) {
        lock.unlock();
    }
}

锁 Key 命名规范

格式:lock:<tenantId>:<userId>:<唯一标识>

示例 Key 说明
lock:t001:u12345:order-67890 下单锁
lock:t001:u12345:entity-abc 业务对象操作锁

命名应包含足够的维度信息,保证锁粒度精准,避免误锁其他用户的同类操作。

禁止行为


相关:async.md(异步与线程)、database.md(数据库事务)、error-handling.md(异常处理)。