springboot2 用lettuce客戶端配置多個redisTemplate

MAVEN依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>
 

application.yml配置文件

spring:

  redis:
    activity: 
      hostName: 127.0.0.1
      port: 1000
      password: dddsiedXdf
    lettuce: 
      pool: 
        maxIdle: 10
        minIdle: 0
        maxTotal: 20
        maxWaitMillis: 5000

配置類:

@Configuration
public class RedisConfig {
    
    @Bean
    @ConfigurationProperties(prefix = "spring.redis.lettuce.pool")
    @Scope(value = "prototype")
    public GenericObjectPoolConfig redisPool(){
        return new GenericObjectPoolConfig();
    }
    
    @Bean
    @ConfigurationProperties(prefix = "spring.redis.activity")
    public RedisStandaloneConfiguration redisConf() {
        return new RedisStandaloneConfiguration();
    }
    
    @Bean
    @Primary
    public LettuceConnectionFactory factory(GenericObjectPoolConfig config, RedisStandaloneConfiguration redisConf) {
        LettuceClientConfiguration clientConfiguration = LettucePoolingClientConfiguration.builder()
                .poolConfig(config).commandTimeout(Duration.ofMillis(config.getMaxWaitMillis())).build();
        return new LettuceConnectionFactory(redisConf, clientConfiguration);
    }
    
    @Bean(name = "redisTemplate")
    public StringRedisTemplate redisTemplateA(LettuceConnectionFactory factory) {
        StringRedisTemplate template = new StringRedisTemplate(factory);
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new StringRedisSerializer());
        template.setHashValueSerializer(new StringRedisSerializer());
        template.setHashKeySerializer(new StringRedisSerializer());
        return template;
    }
}

 

在業務類裏引入redisTemplate:

@Resource
    private RedisTemplate redisTemplate;

就可以使用了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章