1、配置redis连接
springboot 2.2.x以上版本只需配置redis无需另外配置redisson
2、使用方式
java
import cn.hutool.extra.spring.SpringUtil;
import java.util.concurrent.TimeUnit;
public class LockUtil {
private final static RedissonClient redisson = SpringUtil.getBean(RedissonClient.client.class);
public static void redissonLock(String key, Runnable runnable) throws Exception {
// 引入redis分布式锁
RLock lock = redisson.getLock(key);
try {
// 尝试获取锁,最多等待 10 秒,锁自动过期时间为 5 秒
boolean isLocked = lock.tryLock(10, 5, TimeUnit.SECONDS);
if (isLocked) {
// todo 执行业务操作
runnable.run();
} else {
// todo 未获取到锁时的处理
}
} finally {
// 释放锁
if (lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
}
}
3、 使用要点
- 根据需求配置等待时间
- 处理未获取到锁的情况
- 执行操作过后需要采用finally去解锁