Java中Redis配置类客户端连接数设置及生效问题排查
问题:Redis连接池配置不生效及Java与Redis连接获取方法
我将maxConnection设置为0,原本预期向Redis写入数据时会报错,但程序仍正常运行。通过RedisInsight查看客户端连接数,显示为8、9、11等数值,并非设置的0。
相关代码片段如下:
@Bean public JedisConnectionFactory connectionFactory() { RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration(); configuration.setHostName(hostname); configuration.setDatabase(database); configuration.setPort(port); configuration.setPassword(password); getJedisClientConfiguration(); JedisClientConfiguration.JedisClientConfigurationBuilder jedisClientConfiguration = JedisClientConfiguration.builder(); jedisClientConfiguration.usePooling(); return new JedisConnectionFactory(configuration, jedisClientConfiguration.build()); } @Bean public JedisClientConfiguration getJedisClientConfiguration() { JedisClientConfiguration.JedisClientConfigurationBuilder builder = (JedisClientConfiguration.JedisClientConfigurationBuilder) JedisClientConfiguration .builder(); GenericObjectPoolConfig genericObjectPoolConfig = new GenericObjectPoolConfig(); genericObjectPoolConfig.setMaxTotal(maxConnection); //GenericObjectPoolConfig.setMaxIdle(maxConnectionIdle); //GenericObjectPoolConfig.setMinIdle(minConnectionIdle); JedisClientConfiguration clientConfiguration = builder.usePooling().poolConfig(genericObjectPoolConfig).build(); System.out.println(genericObjectPoolConfig.getMaxTotal()); return clientConfiguration; }
请问如何正确获取Java与Redis的连接?
解决方法
该问题已通过调整连接池配置的绑定逻辑解决,核心修复点:
- 构建
JedisConnectionFactory时,直接使用getJedisClientConfiguration()返回的配置对象,而非重新创建空的配置构建器,确保自定义的连接池参数(如maxTotal)被正确应用。 - 修正后的代码会将配置好的
JedisClientConfiguration实例传入JedisConnectionFactory构造方法,保证连接池的参数设置生效,避免出现配置不生效的情况。
内容的提问来源于stack exchange,提问作者Ayshe Ayparcasi
相关产品推荐
相关产品推荐

