redisson实现分布式锁
maven依赖:
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.8.2</version>
</dependency>
redisson实现分布式锁:
@Resource
private Redisson redisson;
public static final String redisson_lock_key= "redisson:lock:key:";
public void distributedLocks(String key) {
String redissonKey = Constants.redisson_lock_key + key;
RLock rLock = redisson.getLock(redissonKey);
boolean lock = false;
try {
// 尝试加锁,最多等待1秒,上锁以后3s自动解锁
lock = rLock.tryLock(1, 3, TimeUnit.SECONDS);
if (!lock) {
throw new RuntimeException("redis distributed lock key [" + redissonKey + "] is locked!");
}
// doSomething();
} catch (Exception ex) {
logger.error("cacuteTimes occer exception", ex);
} finally {
if (lock) {
rLock.unlock();
}
}
}