Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 连接池如何使用spring引导应用程序与RedisTemplate一起工作_Java_Spring_Spring Boot_Spring Data Redis - Fatal编程技术网

Java 连接池如何使用spring引导应用程序与RedisTemplate一起工作

Java 连接池如何使用spring引导应用程序与RedisTemplate一起工作,java,spring,spring-boot,spring-data-redis,Java,Spring,Spring Boot,Spring Data Redis,我有以下代码片段,用于获取RedisTemplate @Bean public JedisConnectionFactory getJedisConnectionFactory() { RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(); redisStandaloneConfiguration.setHostName(host); i

我有以下代码片段,用于获取RedisTemplate

@Bean
public JedisConnectionFactory getJedisConnectionFactory() {
    RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
    redisStandaloneConfiguration.setHostName(host);
    if (!StringUtils.isEmpty(password)) {
        redisStandaloneConfiguration.setPassword(RedisPassword.of(password));
    }
    redisStandaloneConfiguration.setPort(port);
    return new JedisConnectionFactory(redisStandaloneConfiguration, getJedisClientConfiguration());
}

@Bean
public RedisTemplate redisTemplate() {
    RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
    redisTemplate.setConnectionFactory(getJedisConnectionFactory());
    redisTemplate.setKeySerializer(new StringRedisSerializer());
    return redisTemplate;
@Bean
public-JedisConnectionFactory getJedisConnectionFactory(){
RedisStandaloneConfiguration RedisStandaloneConfiguration=新的RedisStandaloneConfiguration();
redisStandaloneConfiguration.setHostName(主机);
如果(!StringUtils.isEmpty(密码)){
redisStandaloneConfiguration.setPassword(RedisPassword.of(password));
}
重新标准配置。设置端口(端口);
返回新的JedisConnectionFactory(重新标准配置,getJedisClientConfiguration());
}
@豆子
公共RedisTemplate RedisTemplate(){
RedisTemplate RedisTemplate=新RedisTemplate();
redisTemplate.setConnectionFactory(getJedisConnectionFactory());
setKeySerializer(新的StringRedisSerializer());
返回模板;
}

我的问题是sprint boot如何理解连接池,因为我在工厂中没有提供任何关于连接池的信息。我的应用程序属性文件具有以下属性

redis.host=<redis-host>
redis.port=<port>
redis.password=<password>
redi.jedis.pool.max.total=16
redi.jedis.pool.max.idle=8
redi.jedis.pool.min.idle=4
redis.host=
redis.port=
redis.password=
redi.绝地武士池最大总数=16
redi.jedis.pool.max.idle=8
redi.jedis.pool.min.idle=4

使用生成器创建
绝地客户端配置时

JedisClientConfigurationBuilder builder = JedisClientConfiguration .builder()
这将在内部调用
JedisClientConfiguration
上的默认构造函数,如下所示

private DefaultJedisClientConfigurationBuilder() {
  this.poolConfig = new JedisPoolConfig();
  // other configs
}
config
进一步扩展了具有如下默认值的
GenericObjectPoolConfig
。(如果不手动覆盖,则为默认值)

在您的情况下,由于您已使用
GenericObjectPoolConfig
覆盖了config,因此它将从中拾取值

GenericObjectPoolConfig.setMaxTotal(maxConnection); 
GenericObjectPoolConfig.setMaxIdle(maxConnectionIdle); 
GenericObjectPoolConfig.setMinIdle(minConnectionIdle);
当您指定
usePooling()
poolConfig(genericObjectPoolConfig)
时,您的应用程序将使用这些配置进行连接池


我希望这能有所帮助。

您能分享此
getJedisClientConfiguration()
的详细信息吗。@Bean公共JedisClientConfiguration getJedisClientConfiguration(){JedisClientConfiguration.JedisClientConfiguration builder=(JedisClientConfiguration.JedisClientConfiguration builder)JedisClientConfiguration.builder();GenericObjectPoolConfig GenericObjectPoolConfig=new GenericObjectPoolConfig();GenericObjectPoolConfig.setMaxTotal(maxConnection);GenericObjectPoolConfig.setMaxIdle(maxConnectionIdle);GenericObjectPoolConfig.setMinIdle(minConnectionIdle);返回builder.usePooling().poolConfig(GenericObjectPoolConfig).build();}如果没有指定池值,那么设置的默认值是什么?感谢您的详细解释。你能给我指一些文件吗?在那里我可以完整地阅读它,并且更好地理解它future@Parveen你可以在这里查阅官方文件。此外,您还可以浏览源代码。你也可以通过绝地武士
GenericObjectPoolConfig.setMaxTotal(maxConnection); 
GenericObjectPoolConfig.setMaxIdle(maxConnectionIdle); 
GenericObjectPoolConfig.setMinIdle(minConnectionIdle);