Rediison pom
版本问题请参考:https://github.com/redisson/redisson/tree/master/redisson-spring-boot-starter
<!--注意版本问题 我的SpringBoot版本是2.1.0.RELEASE-->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.15.6</version>
<exclusions>
<exclusion>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-data-24</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-data-21</artifactId>
<version>3.15.6</version>
</dependency>
Rediison yml 配置
spring:
application:
# 模块名称
name: xxx
redis:
# redis地址
host: 127.0.0.1
# redis端口
port: 6379
# redis索引
database: 0
# redis密码
password:
# redis连接超时时间
timeout: 10s
lettuce:
pool:
# redis连接池中的最小空闲连接
min-idle: 0
# redis连接池中的最大空闲连接
max-idle: 8
# redis连接池的最大数据库连接数
max-active: 8
# redis连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
redisson:
config: |
singleServerConfig:
#连接空闲超时,单位:毫秒
idleConnectionTimeout: 10000
#连接超时,单位:毫秒
connectTimeout: 10000
#命令等待超时,单位:毫秒
timeout: 3000
#命令失败重试次数
retryAttempts: 3
#命令重试发送时间间隔,单位:毫秒
retryInterval: 1500
#单个连接最大订阅数量
subscriptionsPerConnection: 5
#客户端名称
clientName: null
#节点地址
address: "redis://127.0.0.1:6379"
#密码
password:
#发布和订阅连接的最小空闲连接数
subscriptionConnectionMinimumIdleSize: 1
#发布和订阅连接池大小
subscriptionConnectionPoolSize: 50
#最小空闲连接数
connectionMinimumIdleSize: 32
#连接池大小
connectionPoolSize: 64
#数据库编号
database: 0
#DNS监测时间间隔,单位:毫秒
dnsMonitoringInterval: 5000
#线程池数量
threads: 0
#Netty线程池数量
nettyThreads: 0
#编码
codec: !<org.redisson.codec.JsonJacksonCodec> {}
#传输模式
"transportMode":"NIO"
封装成类和方法
@Component
public class RedissonLock {
@Autowired
private RedissonClient redissonClient;
@Value("${redissonlock.waitTime}")
private String waitTime;
@Value("${redissonlock.leaseTime}")
private String leaseTime;
/**
* 加锁
*
* @param LockName key名称
* @return
* @throws InterruptedException
*/
public Boolean acquire(String LockName) throws InterruptedException {
RLock lock = redissonClient.getLock(LockName);
return lock.tryLock(Long.valueOf(waitTime), Long.valueOf(leaseTime), TimeUnit.SECONDS);
}
/**
* 解锁
*
* @param LockName key名称
*/
public void release(String LockName) {
RLock lock = redissonClient.getLock(LockName);
if (lock != null && lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
}
网友评论