尝试在 Spring Data Redis 环境中设置 Lettuce 连接池。
下面是代码
@Bean
LettuceConnectionFactory redisConnectionFactory(GenericObjectPoolConfig genericObjectPoolConfig) {
RedisStandaloneConfiguration redisConfiguration = new RedisStandaloneConfiguration();
redisConfiguration.setHostName(hostName);
redisConfiguration.setPort(port);
redisConfiguration.setPassword(password);
redisConfiguration.setDatabase(databaseIndex);
LettuceClientConfiguration lettuceClientConfiguration= LettucePoolingClientConfiguration.builder().poolConfig(genericObjectPoolConfig).build();
return new LettuceConnectionFactory(redisConfiguration,lettuceClientConfiguration);
}
@Bean
public GenericObjectPoolConfig genericObjectPoolConfig(){
GenericObjectPoolConfig genericObjectPoolConfig=new GenericObjectPoolConfig();
genericObjectPoolConfig.setMaxTotal(100);
return genericObjectPoolConfig;
}
当我检查执行时,它没有考虑连接池以及每次建立连接时。 有这方面的指点吗?
来自LettuceConnectionFactory的评论:
该工厂在每次调用 getConnection() 时都会创建一个新的 LettuceConnection。默认情况下,多个 LettuceConnections 共享一个线程安全的本机连接。
另参考另一个问题:使用spring-data-redis配置了Redis连接池但无法正常工作
我们可以说,如果您的应用程序仅连接到一台 Redis 服务器/集群,您希望保留默认值。否则,例如,特别是当您开发多租户应用程序时,您可以将 shareNativeConnection 设置为 false 并使用池(将 minIdle 设置为 0 并将 minEvictableIdleDuration 设置为适当的值)。