redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
最近在使用redis的时候出现了一个问题,使用jedis客户端的时候,因为redis没有设置密码,所以application里面也没有写密码,所以报了这个错误,改正方法就是加一段
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
jedisPoolConfig.setMaxTotal(maxActive);
jedisPoolConfig.setMinIdle(minIdle);
//加上这个!!!
if (StringUtils.isEmpty(password)){
password=null;
}
JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout, password);
logger.info("JedisPool注入成功!");
logger.info("redis地址:" + host + ":" + port);
return jedisPool;
为什么出现这个问题
密码不输入应该是默认为空,但是redis载入的时候会加载这个"“进来,java大家都知道”“和null是不一样的,在安装redis后使用默认的空为密码,因为java配置读取出来载入进去的”"和redis的无密码在jedis中连接redis时是不同的,但是有不会出现密码错误,一直报连接池失败。
我找了很久文章,都在说最大连接数量大小之类的问题,说配置错了,但是我没有想到是因为加载进去的redis配置中的空密码和redis本身的无密码是不同的。
我尝试了更改jedis版本,因为这个是同事直接从docker上面拉下来的,本身是没有设置密码的,所以可能踩这个雷的人很少吧。
再见
期待我的下一篇博客!!!