1. redisson依赖
<dependencey>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.13.4</version>
</dependencey>
2.在config定义redisson的bean
@Data
@Component
@ConfigurationProperties(Prefix="spring.redis")
public class RedissonConfig{
private Integer database;
private Cluster cluster;
private String password;
@Data
public static class Cluster{
//集群节点
private String[] nodes;
}
@Bean
public RedissonClient redissonClient(){
Config config = new Config();
String[] nodes = cluster.nodes;
for(int i=0;i<nodes.length;i++){
nodes[i]="reids://"+nodes[i];
}
config.setCodec(new org.redisson.client.codec.StringCodec());
config.useClusterServers().addNodeAddress(nodes).setPassword(password);
return Redisson.create(config)
}
}
3.实现调用的redis的服务
@Service
public class RedisService{
@Autowired
private RedissonClient redissonclient;
public void excuteWithLock(String lockKey,Runnable task){
RLock lock = redissonclient.getLock(lockKey);
boolean locked = false;
try{
locked = lock.tryLock(10,5,TimeUnit.SECONDS);
if(locked){
task.run();
}
}catch(Exception e){
//异常处理
}finally{
if(locked){
lock.unlock();
}
}
}
}