Macula Boot Starter Redis

概述

该模块提供连接Redis的相关配置,使用了redisson库

组件坐标

<dependency>
    <groupId>dev.macula.boot</groupId>
    <artifactId>macula-boot-starter-redis</artifactId>
    <version>${macula.version}</version>
</dependency>

使用配置

使用时有两种方式配置,一种是spring-boot默认的配置形式,另一种是redisson的配置形式。如下所示:

spring:
  redis:
    database: 
    host:
    port:
    password:
    ssl: 
    timeout:
    cluster:
      nodes:
    sentinel:
      master:
      nodes:

redisson的配置方式如下,包括单点、主从、集群,下面是集群模式:

spring:
  redis:
   redisson: 
      file: classpath:redisson.yaml  # file和config选一个
      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.Kryo5Codec> {}
        transportMode: "NIO"        

核心功能

默认提供的Bean

  • RedissonClient
  • RedissonRxClient
  • RedissonReactiveClient
  • RedissonConnectionFactory
  • RedisTemplate
  • StringRedisTemplate
  • ReactiveRedisTemplate
  • ReactiveStringRedisTemplate

多Redis源的配置-Redisson方式

首先需要在配置文件中添加:

spring:
  redis:
    redisson:
      one:
        file: classpath:redisson.yaml
        config: |
                    xxxxx
      two:
        file: classpath:redisson.yaml
        config: |
                    xxxxx

然后添加配置Bean,注意其中一个要设置@Primary注解,以便给默认的RedisConnectionFactory使用

public class Config {
    @Bean
    @ConfigurationProperties(prefix = "spring.redis.redisson.one")
    public RedissonProperties redissonPropertiesOne() {
        return new RedissonProperties();
    }

    @Primary
    @Bean(destroyMethod = "shutdown")
    public RedissonClient redissonClientOne(ApplicationContext ctx, RedissonProperties redissonPropertiesOne) throws Exception {
        Config config = RedissonConfigBuilder.create().build(ctx, null, redissonPropertiesOne);
        return Redisson.create(config);
    }

    @Bean
    @ConfigurationProperties(prefix = "spring.redis.redisson.two")
    public RedissonProperties redissonPropertiesTwo() {
        return new RedissonProperties();
    }

    @Bean(destroyMethod = "shutdown")
    public RedissonClient redissonClientTwo(ApplicationContext ctx, RedissonProperties redissonPropertiesTwo) throws Exception {
        Config config = RedissonConfigBuilder.create().build(ctx, null, redissonPropertiesTwo);
        return Redisson.create(config);
    }
}

多Redis源的配置-Redis方式

首先在配置文件中添加

spring:
  redis:
    one:
      xxx
    two:
      xxx

然后添加配置Bean,注意其中一个要设置@Primary注解,以便给默认的RedisConnectionFactory使用

@Configuration
public class Config {
    @Bean
    @ConfigurationProperties(prefix = "spring.redis.one")
    public RedisProperties redisPropertiesOne() {
        return new RedisProperties();
    }

    @Primary
    @Bean(destroyMethod = "shutdown")
    public RedissonClient redissonClientOne(ApplicationContext ctx, RedisProperties redisPropertiesOne) throws Exception {
        Config config = RedissonConfigBuilder.create().build(ctx, redisPropertiesOne, new RedissonProperties());
        return Redisson.create(config);
    }
  
    @Bean
    @ConfigurationProperties(prefix = "spring.redis.two")
    public RedisProperties redisPropertiesTwo() {
        return new RedisProperties();
    }

    @Bean(destroyMethod = "shutdown")
    public RedissonClient redissonClientTwo(ApplicationContext ctx, RedisProperties redisPropertiesTwo)
        throws Exception {
        Config config = RedissonConfigBuilder.create().build(ctx, redisPropertiesTwo, new RedissonProperties());
        return Redisson.create(config);
    }
}

依赖引入

<dependencies>
    <dependency>
        <groupId>org.redisson</groupId>
        <artifactId>redisson-spring-data-26</artifactId>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
        <exclusions>
            <exclusion>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
            </exclusion>
            <exclusion>
                <groupId>io.lettuce</groupId>
                <artifactId>lettuce-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

版权说明

  • redisson:https://github.com/redisson/redisson/blob/master/LICENSE.txt
  • jackson:https://github.com/FasterXML/jackson-core/blob/master/LICENSE