一、引入maven
<!-- Redisson 锁功能 -->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.16.2</version>
</dependency>
二、配置
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.stereotype.Component;
@Component
public class RedissionConfig {
@Value(value = "${spring.redis.host}")
private String host;
@Value(value = "${spring.redis.port}")
private String port;
@Bean(destroyMethod = "shutdown")
public RedissonClient redissonClient(){
Config config = new Config();
String address = "redis://" + host + ":" + port;
config.useSingleServer().setAddress(address);
return Redisson.create(config);
}
}
三、使用
@Autowired
private RedissonClient redissonClient;
public void test(){
String key = "redissionkey001";
log.info("get lock before");
Lock lock = redissonClient.getLock(key);
log.info("get lockkey");
lock.lock();//锁已经被调用,则该行代码会一直等待锁资源的释放
try {
log.info("locked, do sth");
Thread.sleep(10000);
}catch (Exception e){
log.error("{}", e);
}finally {
lock.unlock();
}
}
四、说明
在引入redission之前,项目中已经集成了redis作为公共服务,公共模块中redission的引入会覆盖redis的配置,所以集成方式为redis作为公共模块引入项目,在该项目中再单独引入redission,完美解决冲突