引用pom依赖
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.11.2</version>
</dependency>
Redisson分布式redis服务支持配置
import lombok.Getter;
import lombok.Setter;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.ClusterServersConfig;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
/**
* @Copyright: 2019-2021
* @FileName: RedissonConfig.java
* @Author: bo a bo
* @Date: 2020/12/29 16:33
* @Description: Redisson分布式redis服务支持配置
*/
@Getter
@Setter
@Component
public class RedissonConfigReport {
@Value("${spring.redis.host:none}")
String serverAddress;
@Value("${spring.redis.password:none}")
String serverPassword;
@Value("${spring.redis.port:none}")
String serverPort;
@Value("${spring.redis.database:0}")
Integer database;
@Value("${spring.redis.cluster.nodes:none}")
private String redisClusterNodes;
@Bean("redissonClientReport")
public RedissonClient redissonClient() {
Config config = new Config();
if (serverAddress.equals("none") && !redisClusterNodes.equals("none")) {
String[] split = redisClusterNodes.split(",");
ClusterServersConfig clusterServersConfig = config.useClusterServers();
for (int i = 0; i < split.length; i++) {
String adress = "redis://" + split[i];
clusterServersConfig
.addNodeAddress(adress);
}
clusterServersConfig.setPassword(this.getServerPassword());
clusterServersConfig.setSlaveConnectionMinimumIdleSize(1);
clusterServersConfig.setMasterConnectionMinimumIdleSize(1);
} else {
config.useSingleServer()
.setAddress("redis://" + serverAddress + ":" + serverPort)
.setDatabase(this.getDatabase())
.setPassword(this.getServerPassword());
}
return Redisson.create(config);
}
}
使用
public class test{
@Autowired
@Qualifier("redissonClientReport")
private RedissonClient redissonClient;
private static final String REDISSON_LOCK_KEY = "redissonLockKey:";
public void testLock(){
RLock lock = redissonClient.getLock(REDISSON_LOCK_KEY + id);
try {
lock.lock(2, TimeUnit.SECONDS);
//处理业务
………………………………
}finally {
lock.unlock();
}
}
}