Skip to content

组件功能说明

1. RedissonBaseProperties

Redisson的基础配置属性类,用于配置Redisson的各种线程池参数。

2. RedissonCommonAutoConfiguration

Redisson的自动配置类,负责创建和配置Redisson客户端及相关组件。

3. LockInfoType

定义不同业务场景下的锁信息处理器类型常量。

4. Constants

定义系统中使用的公共常量,如分隔符。

5. RedissonDataHandle

Redisson数据操作的统一入口,封装了常用的Redis操作。

6. LocalLockCache

本地锁缓存管理器,使用Caffeine缓存ReentrantLock对象。

7. LockInfoHandle & LockInfoHandleFactory

锁信息处理接口及工厂类,用于根据不同业务类型获取对应的锁信息处理器。

8. ExtParameterNameDiscoverer & LocalVariableTableParameterNameDiscoverer

参数名称发现器,用于解析方法参数名称,支持SpEL表达式的解析。

组件协同工作机制

  1. 配置阶段

    • RedissonCommonAutoConfiguration读取RedissonBaseProperties配置
    • 创建Redisson客户端并配置线程池
    • 注册RedissonDataHandle、LocalLockCache、LockInfoHandleFactory等Bean
  2. 运行阶段

    • 当需要分布式锁或防重复执行时,通过LockInfoHandleFactory获取对应的锁信息处理器
    • 锁信息处理器使用参数名称发现器解析方法参数,生成唯一的锁名称
    • 通过LocalLockCache获取本地锁防止JVM内并发
    • 通过Redisson客户端获取分布式锁防止多实例并发
    • 通过RedissonDataHandle操作Redis中的标记位

使用示例

java
// 1. 在application.yml中配置Redisson参数
/*
spring:
  redis:
    redisson:
      threads: 16
      nettyThreads: 32
      corePoolSize: 10
      maximumPoolSize: 20
*/

// 2. 在业务方法上使用防重复执行注解
/*
@RepeatExecuteLimit(
    name = "create_order",
    keys = {"#order.userId", "#order.productId"},
    durationTime = 60,
    message = "订单创建中,请勿重复提交"
)
public String createOrder(Order order) {
    // 业务逻辑
}
*/

// 3. 在需要分布式锁的地方使用
/*
@ServiceLock(
    lockType = LockType.Fair,
    name = "update_inventory",
    keys = {"#productId"}
)
public void updateInventory(Long productId, int quantity) {
    // 业务逻辑
}
*/