spring boot以lettuce連接池整合redis-cluster(單機及集群版)


 

一.添加相關pom依賴

commons依賴主要應用於單機版

<!--redis-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- redis依賴commons-pool 這個依賴一定要添加 -->
<dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-pool2</artifactId>
</dependency>

 

二.修改application.yml

a. 單機版:

#redis單機版
  redis:
     host: 192.168.40.156
     port: 6379
      # 密碼 沒有則可以不填
   password: 123456
      # 如果使用的jedis 則將lettuce改成jedis即可
   lettuce:
        pool:
          # 最大活躍鏈接數 默認8(使用負值表示沒有限制)
         max-active: 8
          # 最大空閑連接數 默認8
          	max-idle: 8
          # 最小空閑連接數 默認0
          	min-idle: 0
          # 連接池最大阻塞等待時間(使用負值表示沒有限制)
         max-wait: -1

b.集群版:

#redis集群版
  redis:
    timeout: 6000ms
    database: 0
    cluster:
      nodes:
        - 192.168.40.156:7001
        - 192.168.40.156:7002
        - 192.168.40.157:7003
        - 192.168.40.157:7004
        - 192.168.40.158:7005
        - 192.168.40.158:7006
      max-redirects: 3 # 獲取失敗 最大重定向次數
    lettuce:
      pool:
        max-active: 1000  #連接池最大連接數(使用負值表示沒有限制)
        max-idle: 10 # 連接池中的最大空閑連接
        min-idle: 5 # 連接池中的最小空閑連接
        max-wait: -1 # 連接池最大阻塞等待時間(使用負值表示沒有限制)

三.添加RedisConfig 添加序列化方式以及緩存配置

@Configuration
@EnableCaching // 開啟緩存支持
public class RedisConfig extends CachingConfigurerSupport {


    @Resource
    private LettuceConnectionFactory lettuceConnectionFactory;


    @Bean
    public KeyGenerator keyGenerator() {
        return new KeyGenerator() {
            @Override
            public Object generate(Object target, Method method, Object... params) {
                StringBuffer sb = new StringBuffer();
                sb.append(target.getClass().getName());
                sb.append(method.getName());
                for (Object obj : params) {
                    sb.append(obj.toString());
                }
                return sb.toString();
            }
        };
    }


    // 緩存管理器
    @Bean
    public CacheManager cacheManager() {
        RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager.RedisCacheManagerBuilder
                .fromConnectionFactory(lettuceConnectionFactory);
        @SuppressWarnings("serial")
        Set<String> cacheNames = new HashSet<String>() {
            {
                add("codeNameCache");
            }
        };
        builder.initialCacheNames(cacheNames);
        return builder.build();
    }


    /**
     * RedisTemplate配置
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
        // 設置序列化
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(
                Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, Visibility.ANY);
        om.enableDefaultTyping(DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        // 配置redisTemplate
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
        redisTemplate.setConnectionFactory(lettuceConnectionFactory);
        RedisSerializer<?> stringSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(stringSerializer);// key序列化
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);// value序列化
        redisTemplate.setHashKeySerializer(stringSerializer);// Hash key序列化
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);// Hash value序列化
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }


}

 

四.使用

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM