redis - Spring data Redis集群Lettuce连接设置

标签 redis spring-data-redis lettuce amazon-elasticache

我们将 spring data redis 与 lettuce 一起使用,lettuce 使用单个连接,但在 Web 应用程序中,根据我的假设,最好使用连接池。下面是java配置代码

 @Configuration
    @ComponentScan(basePackages = { "com.test.*" })
    public class AppConfig {
    
        @Bean
        public LettuceConnectionFactory getLettuceConnectionFactory() {
              List<String> clusterNodes = Arrays.asList("redis-cluster----0001-001.redis-cluster---.usw2.cache.amazonaws.com:6379", "redis-cluster----0001-002.redis-cluster---.usw2.cache.amazonaws.com:6379");
              final LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(new RedisClusterConfiguration(clusterNodes));
              lettuceConnectionFactory.setTimeout(10000);
              lettuceConnectionFactory.setUseSsl(true);
              lettuceConnectionFactory.setVerifyPeer(false);
              lettuceConnectionFactory.setStartTls(false);
              lettuceConnectionFactory.afterPropertiesSet();
              return lettuceConnectionFactory;
        }
        
        @Bean
        public RedisTemplate<String, Object> redisTemplate() {
              final RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
              redisTemplate.setKeySerializer(new StringRedisSerializer());                                           
              redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
              redisTemplate.setConnectionFactory(getLettuceConnectionFactory());
              return redisTemplate;
        }
    
    }

由于我们使用的是 Spring data redis 1.8.23 和 Lettuce 4.5.0.final,因此我们无法使用 LettucePoolingClientConfiguration 。
使用 DefaultLettucePool for AWS Elastic Cache 是否是一个好的选择,使用 setShareNativeConnection 设置为 false 的缺点是什么。

任何其他更好的连接池选择。

最佳答案

Does making use of DefaultLettucePool for AWS Elastic Cache is good option

从功能角度来看,它工作得很好,唯一的问题是它已被弃用,因此使用它会产生技术债务。

what is disadvantage of setting using setShareNativeConnection to false

它将增加应用程序的网络 I/O,因为每个操作都会打开和关闭套接字。保持它为 true 可确保多个 LettuceConnection 对象可以重用 native 连接。

作为替代方案,请尝试使用 Jedis作为你的引擎而不是生菜。我使用这个库获得了一些出色的性能,并且它也支持连接池。

关于redis - Spring data Redis集群Lettuce连接设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62939334/

相关文章:

redis - 使用redis的 'keys'命令时如何获取键和值

spring-data-redis - 创建 Lettuce StatefulRedisConnection 将字符串存储为键,将字节数组存储为值

java - 如何使用 ElastiCache 作为 Camel 幂等存储库?

scala - Spark/Scala 并行写入 redis

java - 如果缓存服务器出现故障,是否可以使应用程序忽略缓存?

redis - 使用 Spring & Lettuce 接收 Redis 流数据

XML 格式的 Python 生菜测试结果

Redis Lettuce 连接和 BLPOP

spring-boot - 用于 Spring boot redis 集成测试的可靠库

node.js - Redis 发布/订阅 vs Node 事件发射器