spring boot以lettuce连接池整合redis-cluster(单机及集群版)

一.添加相关pom依赖
commons依赖主要应用于单机版

org.springframework.boot spring-boot-starter-data-redis org.apache.commons commons-pool2


二.修改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 cacheNames = new HashSet() { { add("codeNameCache"); } }; builder.initialCacheNames(cacheNames); return builder.build(); }/** * RedisTemplate配置 */ @Bean public RedisTemplate redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) { // 设置序列化 Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer( Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, Visibility.ANY); om.enableDefaultTyping(DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); // 配置redisTemplate RedisTemplate redisTemplate = new RedisTemplate(); 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; }}

spring boot以lettuce连接池整合redis-cluster(单机及集群版)
文章图片


四.使用
【spring boot以lettuce连接池整合redis-cluster(单机及集群版)】

    推荐阅读