Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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数据Redis连接池问题_Java_Spring_Redis_Jedis_Spring Data Redis - Fatal编程技术网

Java Spring数据Redis连接池问题

Java Spring数据Redis连接池问题,java,spring,redis,jedis,spring-data-redis,Java,Spring,Redis,Jedis,Spring Data Redis,我使用的是Spring Data Redis,需要解决config的问题。我已按如下方式配置了一个RedisTemplate: @Bean JedisPoolConfig jedisPoolConfig() { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); return jedisPoolConfig; } @Bean public RedisConnectionFactory redisConnection

我使用的是Spring Data Redis,需要解决
config
的问题。我已按如下方式配置了一个
RedisTemplate

@Bean
JedisPoolConfig jedisPoolConfig() {

    JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
    return jedisPoolConfig;
}

@Bean
public RedisConnectionFactory redisConnectionFactory() {

    JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(jedisPoolConfig());
    jedisConnectionFactory.setHostName(redisSettings.getServer().getHost());
    jedisConnectionFactory.setPort(redisSettings.getServer().getPort());
    return jedisConnectionFactory;
}

@Bean
public RedisTemplate<String, Integer> redisTemplate(RedisConnectionFactory redisConnectionFactory) {

    RedisTemplate<String, Integer> redisTemplate = new RedisTemplate<String, Integer>();
    redisTemplate.setConnectionFactory(redisConnectionFactory);
    redisTemplate.setKeySerializer(new StringRedisSerializer());
    redisTemplate.setEnableTransactionSupport(true);
    return redisTemplate;
}
@Bean
JedisPoolConfig jedisPoolConfig() {

    JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
    jedisPoolConfig.setMaxTotal(128);
    return jedisPoolConfig;
}
当我调用
myService.recordStats()
并在调试中逐步完成代码时,它会在尝试递增键11时挂起,并最终失败,导致
redis.clients.jedis.exceptions.JedisConnectionException:无法从池中获取资源
。如果我修改
config
以增加MaxTotal,如下所示:

@Bean
JedisPoolConfig jedisPoolConfig() {

    JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
    return jedisPoolConfig;
}

@Bean
public RedisConnectionFactory redisConnectionFactory() {

    JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(jedisPoolConfig());
    jedisConnectionFactory.setHostName(redisSettings.getServer().getHost());
    jedisConnectionFactory.setPort(redisSettings.getServer().getPort());
    return jedisConnectionFactory;
}

@Bean
public RedisTemplate<String, Integer> redisTemplate(RedisConnectionFactory redisConnectionFactory) {

    RedisTemplate<String, Integer> redisTemplate = new RedisTemplate<String, Integer>();
    redisTemplate.setConnectionFactory(redisConnectionFactory);
    redisTemplate.setKeySerializer(new StringRedisSerializer());
    redisTemplate.setEnableTransactionSupport(true);
    return redisTemplate;
}
@Bean
JedisPoolConfig jedisPoolConfig() {

    JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
    jedisPoolConfig.setMaxTotal(128);
    return jedisPoolConfig;
}

然后问题消失了,我可以在一个事务中增加所有11个键。似乎每个
valueOperations.increment
调用都从池中获取另一个连接。这是正确的,还是我在某个地方遇到了配置问题?

您当前使用的是哪个版本的sd redis?此问题是否已解决?为池的MaxTotal设置的最终值是多少?这有点奇怪-我找不到太多的例子说明人们正在配置配置。我想知道人们是否在使用maxTotal的默认值,该值为8,似乎很低。您是如何得出MaxTotal=128的?您是否找到了解决此问题的方法?目前我面临完全相同的问题:设置redisTemplate.setEnableTransactionSupport(true)时,spring data redis没有释放连接。遗憾的是,我没有找到解决此问题的方法,项目被取消,因此我没有进一步调查:(您当前使用的是哪个版本的sd redis?这个问题解决了吗?为池设置的MaxTotal的最终值是多少?这有点奇怪-我找不到太多的示例说明人们正在配置配置。我想知道人们是否正在使用MaxTotal的默认值,该值为8,似乎很低。您是如何找到的ve at MaxTotal=128?您找到解决此问题的方法了吗?目前我面临完全相同的问题:设置redisTemplate.setEnableTransactionSupport(true)时,spring data redis没有释放连接。遗憾的是,我没有找到解决此问题的方法,项目被取消,因此我没有进一步调查:(您当前使用的是哪个版本的sd redis?这个问题解决了吗?为池设置的MaxTotal的最终值是多少?这有点奇怪-我找不到太多的示例说明人们正在配置配置。我想知道人们是否正在使用MaxTotal的默认值,该值为8,似乎很低。您是如何找到的ve at MaxTotal=128?您找到解决此问题的方法了吗?目前我面临完全相同的问题:设置redisTemplate.setEnableTransactionSupport(true)时,spring data redis没有释放连接。遗憾的是,我没有找到解决此问题的方法,项目被取消,因此我没有进一步调查:(