- 问题代码如下
FlinkJedisPoolConfig flinkJedisPoolConfig = new FlinkJedisPoolConfig.Builder()
.setHost("127.0.0.1")
.setPort(6379)
.setPassword("")
.setTimeout(2000)
.setMaxTotal(200)
.setMaxIdle(10)
.setMinIdle(100)
.build();
- 其他可能问题
配置文件中密码为空,配置如下
host=localhost port=6379 password= timeout=20000 maxPools=200 minIdl=10 maxIdl=100
读取配置文件中password为空,跟上面setPassword("")效果一样,需要判断密码是否为空,如果为空,setPassword(null)。
- 报错提示信息
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
at redis.clients.util.Pool.getResource(Pool.java:53)
……
Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR AUTH <password> called without any password configured for the default user. Are you sure your configuration is correct?
at redis.clients.jedis.Protocol.processError(Protocol.java:127)
at redis.clients.jedis.Protocol.process(Protocol.java:161)
at redis.clients.jedis.Protocol.read(Protocol.java:215)
at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:340)
at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:239)
at redis.clients.jedis.BinaryJedis.auth(BinaryJedis.java:2139)
at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:108)
at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:868)
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:435)
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
at redis.clients.util.Pool.getResource(Pool.java:49)
... 26 more
- 原因分析
原因是Redis服务器没有设置密码,但客户端向其发送了AUTH(authentication,身份验证)请求。
- 修改后的代码
FlinkJedisPoolConfig flinkJedisPoolConfig = new FlinkJedisPoolConfig.Builder()
.setHost("127.0.0.1")
.setPort(6379)
.setPassword(null)
.setTimeout(2000)
.setMaxTotal(200)
.setMaxIdle(10)
.setMinIdle(100)
.build();