注释类型 RedisLock


  • @Target(METHOD)
    @Documented
    @Retention(RUNTIME)
    @Repeatable(RedisLocks.class)
    public @interface RedisLock
    单机分布式锁 基于AOP, 对于同个方法的注解,总会优先于事务注解开始,在事务提交后释放锁 如果外层已经开始事务,则无法使锁免于事务隔离的影响,使用方需要注意

    注意:

    当注解组合使用时,必须注意多个业务间对加锁的顺序处理;为避免死锁,建议为每个加锁的方法注明尝试加锁的等待时间waitTime()为正数,防止死锁事故。

    作者:
    ZSP
    • 必需元素概要

      所需元素 
      修饰符和类型 必需的元素 说明
      String key
      键主体,粒度参考mysql innodb行锁。
    • 元素详细资料

      • key

        String key
        键主体,粒度参考mysql innodb行锁。当粒度过大时影响并发。 如tenantId_orgId_业务主键。
      • prefix

        String prefix
        key前缀,用于区分key命名空间,拼接在key前面 prefix:key
        默认值:
        ""
      • waitTime

        long waitTime
        尝试获取锁的等待时间 小于0时一直阻塞等待,大于等于零时当超过指定时间会进入获取锁失败流程。 单位 timeUnit()
        默认值:
        -1L
      • leaseTime

        long leaseTime
        自动释放锁的时间。 请合理预估业务需要时间,防止锁提前被释放。 -1表明线程在占有锁期间不会因为执行时间过长导致锁释放。 正数代表在指定时间后将自动释放锁。 单位 timeUnit()
        默认值:
        -1L
      • timeUnit

        TimeUnit timeUnit
        默认值:
        java.util.concurrent.TimeUnit.MILLISECONDS
      • exceptionClass

        Class<? extends RuntimeException> exceptionClass
        默认值:
        java.lang.RuntimeException.class
      • exceptionMessage

        String exceptionMessage
        默认值:
        "\u670d\u52a1\u5668\u7e41\u5fd9\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5\uff01"
      • order

        int order
        注解间排序顺序。默认都是0,即默认将会按照声明的顺序依次处理注解内部key。
        默认值:
        0