1.maven导入
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.12.1</version>
</dependency>
2.配置config
import org.apache.commons.lang3.StringUtils;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RedissionConfig {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private int port;
@Value("${spring.redis.database}")
private int database;
@Value("${spring.redis.password}")
private String password;
@Bean
public RedissonClient getRedisson() {
Config config = new Config();
config.useSingleServer().setAddress("redis://" + host + ":" + port)
.setDatabase(database);
if (StringUtils.isNotEmpty(password)) {
config.useSingleServer().setAddress("redis://" + host + ":" + port).setDatabase(database)
.setPassword(password);
} else {
config.useSingleServer().setAddress("redis://" + host + ":" + port).setDatabase(database);
}
config.setLockWatchdogTimeout(2000);
return Redisson.create(config);
}
}
3.具体方法
RLock lock = redissonClient.getLock(entity.getCarNo());
boolean lockSuccess = lock.tryLock(3, TimeUnit.SECONDS);
if (!lockSuccess) {
throw new RuntimeException("操作频繁,请稍后重试!");
}
try {
} finally {
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
} else {
throw new RuntimeException("审批编号:" + eventId + " 在系统中不存在");
}