springboot整合redisson实战(一)整合 redisson-spring-boot-starter
程序开发
2023-09-11 15:44:14
文章目录
前言
SpringBoot整合Redisson有个比较好用的starter包就是redisson-spring-boot-starter,这也是官方比较推荐的配置方式
引入redisson依赖
只需引入redisson-spring-boot-starter就可以了,不过这里需要注意springboot与redisson的版本,因为官方推荐redisson版本与springboot版本配合使用。版本不匹配会导致这种问题。
将 Redisson 与 Spring Boot 库集成。取决于Spring Data Redis模块,支持 Spring Boot 1.3.x - 2.4.x
这句话是官方说的,不过现在的2.5.x也是支持的,只需要注意springboot最低版本不要低于1.3.x即可。
redisson-spring-data与Spring Boot version的版本对应关系
maven依赖
org.redisson redisson-spring-boot-starter 3.17.1
点击redisson-spring-boot-starter进去
org.redisson
redisson-spring-data-26
${project.version}
依赖的springboot版本为2.6
若与项目中版本不匹配
可如此处理
org.redisson redisson-spring-boot-starter 3.13.6 org.redisson redisson-spring-data-23
org.redisson redisson-spring-data-21 3.13.6
org.springframework.boot spring-boot-starter-data-redis
配置文件
application.yml
server:port: 8088spring.redis:enable: true# Connection URL, will override host, port and password (user will be ignored), e.g. redis://user:password@example.com:6379url: redis://127.0.0.1:6379timeout: 2000 # 连接或读取超时时长(毫秒)database: 7redisson:file: classpath:redisson.ymljedis:pool:max-active: 8 # 连接池最大连接数(使用负值表示没有限制)max-wait: 800 # 连接池最大阻塞等待时间(使用负值表示没有限制)max-idle: 8 # 连接池中的最大空闲连接min-idle: 2 # 连接池中的最小空闲连接
spring:#============== redis ===================redis:host: 127.0.0.1port: 6379
ngsoc:redis-lock:maxRetryTimes: 30delayTime: 3000
redisson.yml
# 单节点配置
singleServerConfig:# 连接空闲超时,单位:毫秒idleConnectionTimeout: 10000# 连接超时,单位:毫秒connectTimeout: 10000# 命令等待超时,单位:毫秒timeout: 3000# 命令失败重试次数,如果尝试达到 retryAttempts(命令失败重试次数) 仍然不能将命令发送至某个指定的节点时,将抛出错误。# 如果尝试在此限制之内发送成功,则开始启用 timeout(命令等待超时) 计时。retryAttempts: 3# 命令重试发送时间间隔,单位:毫秒retryInterval: 1500# 密码#password: redis.shbeta# 单个连接最大订阅数量subscriptionsPerConnection: 5# 客户端名称#clientName: axin# # 节点地址address: redis://127.0.0.1:6379# 发布和订阅连接的最小空闲连接数subscriptionConnectionMinimumIdleSize: 1# 发布和订阅连接池大小subscriptionConnectionPoolSize: 50# 最小空闲连接数connectionMinimumIdleSize: 32# 连接池大小connectionPoolSize: 64# 数据库编号database: 6# DNS监测时间间隔,单位:毫秒dnsMonitoringInterval: 5000
# 线程池数量,默认值: 当前处理核数量 * 2
#threads: 0
# Netty线程池数量,默认值: 当前处理核数量 * 2
#nettyThreads: 0
# 编码
codec: ! {}
# 传输模式
transportMode : "NIO"
多节点配置
clusterServersConfig:idleConnectionTimeout: 10000connectTimeout: 10000timeout: 3000retryAttempts: 3retryInterval: 1500failedSlaveReconnectionInterval: 3000failedSlaveCheckInterval: 60000password: nullsubscriptionsPerConnection: 5clientName: nullloadBalancer: ! {}subscriptionConnectionMinimumIdleSize: 1subscriptionConnectionPoolSize: 50slaveConnectionMinimumIdleSize: 24slaveConnectionPoolSize: 64masterConnectionMinimumIdleSize: 24masterConnectionPoolSize: 64readMode: "SLAVE"subscriptionMode: "SLAVE"nodeAddresses:- "redis://127.0.0.1:7004"- "redis://127.0.0.1:7001"- "redis://127.0.0.1:7000"scanInterval: 1000pingConnectionInterval: 0keepAlive: falsetcpNoDelay: falsethreads: 16nettyThreads: 32codec: ! {}transportMode: "NIO"
使用 RedissonClient
配置好后,就可以直接在项目中注入 RedissonClient 就可以了
@RestController
public class RedissonController {@Autowiredprivate RedissonClient redissonClient;@GetMapping(value = "/redisson/{key}")public String redissonTest(@PathVariable("key") String lockKey) {RLock lock = redissonClient.getLock(lockKey);try {lock.lock();Thread.sleep(10000);} catch (Exception e) {} finally {lock.unlock();}return "已解锁";}
}
RLock 继承了java.util.concurrent.locks.Lock;他的实现类:
实现了可重入锁,公平锁,读写锁等加锁解锁功能,下篇详细讲解。
标签:
上一篇:
优化 Three.js 渲染性能的实用技巧
下一篇:
相关文章
-
无相关信息