前言
面试总是会被问到有没有用过分布式锁、redis 锁,大部分读者平时很少接触到,所以只能很无奈的回答 “没有”。本文通过 Spring Boot 整合 redisson 来实现分布式锁,并结合 demo 测试结果。
首先看下大佬总结的图
正文
添加依赖
-
<!--redis-->
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-data-redis</artifactId>
-
-
</dependency>
-
<!--redisson-->
-
<dependency>
-
<groupId>org.redisson</groupId>
-
<artifactId>redisson-spring-boot-starter</artifactId>
-
<version>3.10.6</version>
-
-
</dependency>
配置信息
-
spring:
-
# redis
-
redis:
-
host: 47.103.5.190
-
port: 6379
-
jedis:
-
pool:
-
# 连接池最大连接数(使用负值表示没有限制)
-
max-active: 100
-
# 连接池中的最小空闲连接
-
max-idle: 10
-
# 连接池最大阻塞等待时间(使用负值表示没有限制)
-
max-wait: -1
-
# 连接超时时间(毫秒)
-
timeout: 5000
-
#默认是索引为0的数据库
-
database: 0
配置类
-
/**
-
* redisson 配置,下面是单节点配置:
-
*
-
* @author gourd
-
*/
-
@Configuration
-
publicclassRedissonConfig{
-
@Value("${spring.redis.host}")
-
privateString host;
-
@Value("${spring.redis.port}")
-
privateString port;
-
@Value("${spring.redis.password:}")
-
privateString password;
-
-
@Bean
-
publicRedissonClient redissonClient() {
-
Config config = newConfig();
-
//单节点
-
config.useSingleServer().setAddress("redis://"+ host + ":"+ port);
-
if(StringUtils.isEmpty(password)) {
-
config.useSingleServer().setPassword(null);
-
} else{
-
config.useSingleServer().setPassword(password);
-
}
-
//添加主从配置
-
// config.useMasterSlaveServers().setMasterAddress("").setPassword("").addSlaveAddress(new String[]{"",""});</