Java Spring数据Redis连接池问题
我使用的是Spring Data 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
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没有释放连接。遗憾的是,我没有找到解决此问题的方法,项目被取消,因此我没有进一步调查:(