springboot整合redisson实战(一)整合 redisson 您所在的位置:网站首页 baseus耳机一个响一个不响怎么办 springboot整合redisson实战(一)整合 redisson

springboot整合redisson实战(一)整合 redisson

2023-12-24 05:52| 来源: 网络整理| 查看: 265

前缀:一定要注意版本对应,否则可能会出现idea运行,但jar失败情形

文章目录 前言引入redisson依赖 redisson-spring-data与Spring Boot version的版本对应关系maven依赖 配置文件 redisson.yml 多节点配置 使用 RedissonClient 前言

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的版本对应关系 redisson-spring-data module nameSpring Boot versionredisson-spring-data-161.3.xredisson-spring-data-171.4.xredisson-spring-data-181.5.xredisson-spring-data-202.0.xredisson-spring-data-212.1.xredisson-spring-data-222.2.xredisson-spring-data-232.3.xredisson-spring-data-242.4.x maven依赖 org.redisson redisson-spring-boot-starter 3.17.1 123456

点击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 12345678910111213141516171819202122 配置文件

application.yml

server: port: 8088 spring.redis: enable: true # Connection URL, will override host, port and password (user will be ignored), e.g. redis://user:[email protected]:6379 url: redis://127.0.0.1:6379 timeout: 2000 # 连接或读取超时时长(毫秒) database: 7 redisson: file: classpath:redisson.yml jedis: pool: max-active: 8 # 连接池最大连接数(使用负值表示没有限制) max-wait: 800 # 连接池最大阻塞等待时间(使用负值表示没有限制) max-idle: 8 # 连接池中的最大空闲连接 min-idle: 2 # 连接池中的最小空闲连接 spring: #============== redis =================== redis: host: 127.0.0.1 port: 6379 ngsoc: redis-lock: maxRetryTimes: 30 delayTime: 3000 1234567891011121314151617181920212223242526 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" 1234567891011121314151617181920212223242526272829303132333435363738394041 多节点配置 clusterServersConfig: idleConnectionTimeout: 10000 connectTimeout: 10000 timeout: 3000 retryAttempts: 3 retryInterval: 1500 failedSlaveReconnectionInterval: 3000 failedSlaveCheckInterval: 60000 password: null subscriptionsPerConnection: 5 clientName: null loadBalancer: ! {} subscriptionConnectionMinimumIdleSize: 1 subscriptionConnectionPoolSize: 50 slaveConnectionMinimumIdleSize: 24 slaveConnectionPoolSize: 64 masterConnectionMinimumIdleSize: 24 masterConnectionPoolSize: 64 readMode: "SLAVE" subscriptionMode: "SLAVE" nodeAddresses: - "redis://127.0.0.1:7004" - "redis://127.0.0.1:7001" - "redis://127.0.0.1:7000" scanInterval: 1000 pingConnectionInterval: 0 keepAlive: false tcpNoDelay: false threads: 16 nettyThreads: 32 codec: ! {} transportMode: "NIO" 1234567891011121314151617181920212223242526272829303132 使用 RedissonClient

配置好后,就可以直接在项目中注入 RedissonClient 就可以了

@RestController public class RedissonController { @Autowired private 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 "已解锁"; } } 1234567891011121314151617181920

在这里插入图片描述 RLock 继承了java.util.concurrent.locks.Lock;他的实现类: 在这里插入图片描述 实现了可重入锁,公平锁,读写锁等加锁解锁功能,下篇详细讲解。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有