美文网首页
记录一次Redisson与SpringBoot整合配置

记录一次Redisson与SpringBoot整合配置

作者: 曹大大 | 来源:发表于2022-04-21 17:29 被阅读0次

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();
        }
    }
}

相关文章

网友评论

      本文标题:记录一次Redisson与SpringBoot整合配置

      本文链接:https://www.haomeiwen.com/subject/mgfwertx.html