/**
* 使用Redisson分布式锁-示例
*/
public void useRedissonExample() {
String lockName = "YourSystemName:BizName:LOCK";
//使用分布式锁控制并发
RLock lock = redissonClient.getLock(lockName);
if (lock==null || lock.isLocked()) {
logger.warn("--其他服务器已获取锁[{}]--", lockName);
return;
}
try{
//尝试获取锁等待1秒钟,获取后锁住10分钟, 这里根据业务场景设置锁的持有时间
boolean getLock = lock.tryLock(1, 10*60L, TimeUnit.SECONDS);
//获取不到锁直接返回
if (Booleans.isFalse(getLock)){
logger.warn("--没有获取锁[{}]--", lockName);
return;
}
logger.info("--已获取锁[{}]--", lockName);
//---业务代码从这里开始...
}catch (Exception e){
logger.error("发生异常:{}", e.getMessage(), e);
}finally {
lock.forceUnlock();
logger.info("--已释放锁[{}]--", lockName);
}
}