在本地代码调试redis时,报错“Could not get a resource from the pool”,但是在redis服务器上却可以用redis-cli进行连接,尝试过以下方法:
(1)在服务器上通过
netstat -an | grep 6379 | grep EST | wc -l
查看客户端链接数目为0,说明远没达到
spring-redis.xml配置里的maxTotal;
(2)重启过redis-server,重启后会释放掉所有连接的,但重启后依然连接不上,报同样的错;
(3)在redis.conf中注释掉"bind 127.0.0.1",后来又打开,也不行,配置服务器实际ip也不行;
(4)在本地用redis-cli.exe远程连接redis服务器也连不上;
下载windows redis压缩包并解压(不用安装),切换到redis目录下:D:\MyApps\Redis-x64-3.2.100 下,命令行输入:
redis-cli.exe -h 192.168.56.11 -p 6379
(5)在redis.conf中将保护模式关掉,并把ip绑定都设置成0.0.0.0,但在本地客户端依然连接不上。并且后来发现在redis服务器上 src/redis-cli -h 192.168.56.11 -p 6379
也连接不上,但 src/redis-cli -h 127.0.0.1 -p 6379
却能连接上。
后来分析本地连接不上,从redis服务器却能连接上,而且在服务器上用实际ip也连接不上,想到可能是由于防火墙的原因,然后突然想到之前为了调试微信接口用了iptables做端口转发,还设为了开机自启动。查看iptables状态,果然是开着的,关闭iptables后,从本地也能连接上远程redis-server了,调试代码也能通过了。