build.gradle
compile 'org.redisson:redisson:3.11.4'
application.properties
spring.redis.host=192.168.10.10
spring.redis.port=6379
spring.redis.password=
RedissonConfig.java
/**
* Redisson配置类
*/
@Configuration
public class RedissonConfig {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private String port;
@Value("${spring.redis.password}")
private String password;
/**
* 单机模式
* @return
*/
@Bean(destroyMethod = "shutdown")
public RedissonClient redissonClient() {
Config config = new Config();
SingleServerConfig singleServerConfig = config.useSingleServer();
singleServerConfig.setAddress("redis://" + host + ":" + port);
if (StringUtils.isNotBlank(password)) {
singleServerConfig.setPassword(password);
}
return Redisson.create(config);
}
}
应用
@Autowired
private RedissonClient redissonClient;
/**
* 加分布式锁
* @return
*/
private RLock addDistributedLock() {
RLock lock = null;
try {
lock = redissonClient.getLock("distributed-lock-key");
// 如果没有手动释放,10分钟之后将自动释放
lock.lock(10, TimeUnit.MINUTES);
} catch (Exception e) {
// redis加锁异常,不影响程序运行
log.error("addDistributedLock has Exception", e);
}
return lock;
}
/**
* 释放分布式锁
* @param lock
*/
private void releaseDistributedLock(RLock lock) {
if (Objects.isNull(lock)) {
// 加锁失败,不用释放
return;
}
try {
lock.unlock();
} catch (Exception e) {
// redis释放锁异常,不影响程序运行
log.error("releaseDistributedLock has Exception", e);
}
}
来源:CSDN
作者:愤怒的小鸟灬
链接:https://blog.csdn.net/u012684638/article/details/103235316