使用Jedis封装调用Redis的过程中,难免会出现一点小问题.在不更改Redis默认端口的情况下一切OK.当将6379更改为其他端口(94,或者其他30000)时,小问题出现.提示连接池无法获取连接.
[b]redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool[/b]
本机Redis服务正常,redis-cli能连上.程序始终报错无法连上.
最后发现是在Spring中构造JedisShardInfo的问题:
[img]http://dl.iteye.com/upload/attachment/0064/2451/650de5f8-66d4-3097-9ec3-a334fd0f96ca.bmp[/img]
默认读取${redis.hostIp}与${redis.hostPort}如果不指定类型,构造时始终调用两个字符串的构造函数,所以当出现端口更改时,程序还是调用原来的构造函数.
部分源代码如下:
[img]http://dl.iteye.com/upload/attachment/0064/2453/bdc1f7a9-5ea0-3942-8b32-7d2d414db2dd.bmp[/img]
如要显式调用第二个构造函数,记得加上参数类型即可:
[img]http://dl.iteye.com/upload/attachment/0064/2455/3a950279-c55a-3e47-96fa-fdd64107ed49.bmp[/img]
[b]redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool[/b]
本机Redis服务正常,redis-cli能连上.程序始终报错无法连上.
最后发现是在Spring中构造JedisShardInfo的问题:
[img]http://dl.iteye.com/upload/attachment/0064/2451/650de5f8-66d4-3097-9ec3-a334fd0f96ca.bmp[/img]
默认读取${redis.hostIp}与${redis.hostPort}如果不指定类型,构造时始终调用两个字符串的构造函数,所以当出现端口更改时,程序还是调用原来的构造函数.
部分源代码如下:
[img]http://dl.iteye.com/upload/attachment/0064/2453/bdc1f7a9-5ea0-3942-8b32-7d2d414db2dd.bmp[/img]
如要显式调用第二个构造函数,记得加上参数类型即可:
[img]http://dl.iteye.com/upload/attachment/0064/2455/3a950279-c55a-3e47-96fa-fdd64107ed49.bmp[/img]