RedLock使用教程 redis锁
项目基于springboot
首先是pom文件
<dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>3.16.4</version> </dependency>
官方推荐使用redisson
直接上代码 注册
@Autowired private RedissonClient redissonClient;
获取锁
RLock lock = redissonClient.getLock(RedisMeta.LOCK_KEY); boolean getLock = false; try { getLock = lock.tryLock(2, 120, TimeUnit.SECONDS); if (getLock) { taskSync(); } else { error("上一次还未执行完"); } if (getLock && lock.isLocked()) { lock.unlock(); } } catch (InterruptedException interruptedException) { log.error("分布式锁加锁异常", interruptedException); Thread.currentThread().interrupt(); } finally { if (getLock && lock.isLocked()) { lock.unlock(); } }
解释说明 测试中发现使用 lock.lock();确实可以锁住不会并发执行。 但是第一个lock执行完之后第二个又开始执行,并不能达到仅执行一次的目的,所以此处使用tryLock