素材巴巴 > 程序开发 >

springboot整合redisson实战(一)整合 redisson-spring-boot-starter

程序开发 2023-09-11 15:44:14

文章目录

  • 配置文件
  • 使用 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.redissonredisson-spring-boot-starter3.17.1
     

    点击redisson-spring-boot-starter进去

    org.redisson
    redisson-spring-data-26
    ${project.version}

    依赖的springboot版本为2.6

    若与项目中版本不匹配
    可如此处理

    
     org.redissonredisson-spring-boot-starter3.13.6org.redissonredisson-spring-data-23
     
     org.redissonredisson-spring-data-213.13.6
     org.springframework.bootspring-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;他的实现类:
    在这里插入图片描述
    实现了可重入锁,公平锁,读写锁等加锁解锁功能,下篇详细讲解。


    标签:

    素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。