注意版本redisson-spring-boot-starte 要对应 springboot
- 添加maven
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.15.6</version>
</dependency>
-
沿用 redis 的yaml
-
核心代码:
@Service
public class RedisLockService {
@Resource
private RedissonClient redissonClient;
public void lock() {
// 并不会去尝试获取锁
RLock lock = redissonClient.getLock("lock_key");
try {
//如果锁当前可用,将会获取到锁并继续执行代码。如果锁不可用,代码将会阻塞,直到锁变为可用
lock.lock(10, TimeUnit.SECONDS);
// 执行业务代码
} finally {
lock.unlock();
}
}
public void tryLock() throws InterruptedException {
RLock lock = redissonClient.getLock("lock_key");
try {
// 尝试获取锁,最长等待获取锁时间为60秒(防止应用程序进入永久阻塞状态)
// 锁的持有时间为30秒(redis过期时间)
boolean isLockAcquired = lock.tryLock(60, 30, TimeUnit.SECONDS);
if (isLockAcquired) {
// 执行业务代码
} else {
// 获取锁超时,处理失败情况
}
} finally {
lock.unlock();
}
}
}