所有分类
  • 所有分类
  • 未分类

SpringBoot-配置Redisson的方法

简介

说明

本文介绍如何在SpringBoot中配置Redisson。

官网网址

redisson-spring-boot-starter配置方案:https://github.com/redisson/redisson/tree/master/redisson-spring-boot-starter#spring-boot-starter

spring-boot-starter-data-redis配置方案:Spring Boot Reference Documentation

配置详解:2. 配置方法 · redisson/redisson Wiki · GitHub

备注

以下方法的推荐度由高到低。

方案1:用配置文件

简介

对于配置文件方案,引入的依赖必须是redisson-spring-boot-starter;

法1:application.yml(通用配置)

直接使用spring-boot-starter-data-redis的配置。

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    # password:
    # database: 0     #指定数据库,默认为0
    # timeout: 3000   #连接超时时间,单位毫秒,默认为0。也可以这么写:3s
    # ssl: false      # 是否启用SSL连接,默认false
    # pool: #连接池配置
    #   max-active: 8 #最大活跃连接数,默认8个。
    #   max-idle: 8   #最大空闲连接数,默认8个。
    #   max-wait: -1  #获取连接的最大等待时间,默认-1,表示无限制,单位毫秒。
    #                 #默认值可能会因为获取不到连接,导致事务无法提交,数据库被锁,大量线程处于等待状态的情况。
    #   min-idle: 0   #最小空闲连接数,默认0。
    # sentinel:
    #   master: myMaster             #哨兵master
    #   nodes: host1:port,host2:port #哨兵节点
    # cluster:
    #   max-redirects:               # 集群模式下,集群最大转发的数量
    #   nodes: host1:port,host2:port # 集群节点

法2:application.yml(redisson专用配置)

写法1:都写在application.yml

spring:
  redis:
    redisson: 
      config: |
        clusterServersConfig:
          idleConnectionTimeout: 10000
          connectTimeout: 10000
          timeout: 3000
          retryAttempts: 3
          retryInterval: 1500
          failedSlaveReconnectionInterval: 3000
          failedSlaveCheckInterval: 60000
          password: null
          subscriptionsPerConnection: 5
          clientName: null
          loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
          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: !<org.redisson.codec.MarshallingCodec> {}
        transportMode: "NIO"

写法2:redisson配置单独拿出来

applicaion.yml

​spring:
  redis:
    redisson:
      config: classpath:redisson.yml

redisson.yml 

clusterServersConfig:
  idleConnectionTimeout: 10000
  connectTimeout: 10000
  timeout: 3000
  retryAttempts: 3
  retryInterval: 1500
  password: null
  subscriptionsPerConnection: 5
  clientName: null
  loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
  slaveSubscriptionConnectionMinimumIdleSize: 1
  slaveSubscriptionConnectionPoolSize: 50
  slaveConnectionMinimumIdleSize: 32
  slaveConnectionPoolSize: 64
  masterConnectionMinimumIdleSize: 32
  masterConnectionPoolSize: 64
  readMode: "SLAVE"
  nodeAddresses:
  - "redis://127.0.0.1:7004"
  - "redis://127.0.0.1:7001"
  - "redis://127.0.0.1:7000"
  scanInterval: 1000
threads: 0
nettyThreads: 0
codec: !<org.redisson.codec.JsonJacksonCodec> {}
transportMode:"NIO"

redisson配置文件优先级高于springboot配置文件优先级。

方案2:用代码

简介

编程中有个思路:约定大于配置大于编程。能用配置则用配置,不推荐用代码去配置。

对于配置类配置方案,引入的依赖可以是redisson-spring-boot-starter也可以是redisson。

法1:编写配置类

需要在Resource目录下创建redisson.yml。  

@Configuration
public class RedssonConfig {
    @Bean(destroyMethod="shutdown")
    public RedissonClient redisson() throws IOException {
        RedissonClient redisson = Redisson.create(
                Config.fromYAML(new ClassPathResource("redisson-single.yml").getInputStream()));
        return redisson;
    }
}

法2:用代码配置

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RedissonConfig {
    @Bean
    public RedissonClient redissonClient() {
        Config config = new Config(); 
		
        //指定编码,默认编码为org.redisson.codec.JsonJacksonCodec
        //config.setCodec(new org.redisson.client.codec.StringCodec());
        config.useSingleServer()
                .setAddress("redis://47.108.105.159:6379")
                .setPassword("cen66lyz")
                .setConnectionPoolSize(50)
                .setIdleConnectionTimeout(10000)
                .setConnectTimeout(3000)
                .setTimeout(3000)
                .setDatabase(5);

        return Redisson.create(config);
    }
}
0

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录