原文网址:lock4j–分布式锁中间件–使用/实例_的博客-CSDN博客
简介
说明
本文用示例介绍分布式锁中间件lock4j 的用法。
相关网址
gitee:https://gitee.com/baomidou/lock4j
github:https://github.com/baomidou/lock4j(Star数:68)
lock4j的参考项目:https://gitee.com/kekingcn/spring-boot-klock-starter
友情提示
本人实际使用lock4j过程中遇到了很多问题,不推荐使用lock4j,推荐直接使用redisson的分布式锁。
遇到的问题有:
- 获取锁超时时并没有抛异常,而是一直等待获取到锁
概述
- lock4j与@Transactional类似:将注解写在方法上,自动控制上锁与释放锁。
- lock4j支持Redis(RedisTemplate或Redisson)、Zookeeper作为底层
- 2.0之后支持Redisson和Zookeeper
- 建议基于Redisson
- 原因:可以利用redisson的特性:自动续期等
- 方法:引入依赖:lock4j-redisson-spring-boot-starter
- 支持SPEL
- 执行顺序
- 如果在service上有@Transactional和@lock4j,则执行顺序如下
- 上锁
- 开启事务
- 执行逻辑
- 提交/回滚事务
- 释放锁
- 如果在service上有@Transactional和@lock4j,则执行顺序如下
- 实现原理
- AOP:Advisor + methodInterception