java连接linux里的redis数据库报:Could not get a resource from the pool解决方法

时间:2022-05-27 10:01:20

实验环境:物理机为win8.1系统;虚拟机为linux系统,并且在该linux系统上正确安装了redis数据库。

对于连接redis数据库,如果安装完不进行设置,是无法连接redis数据库的,会报无法从连接池中获取连接。对于这个问题的解决方法可以分为以下几个步骤:

1、确定linux服务器上的telnet服务已经正确安装并且服务已经启动。telnet服务有telnet和telnet-server两个服务,并且linux默认是没有安装telnet-server的,安装这两个服务并且启动服务。
2、设置redis使用的端口不被防火墙拦截,可按照如下设置:
编辑iptables 文件:vi /etc/sysconfig/iptables;
设置redis端口(6379)不被防火墙拦截,添加“-A RH-Firewall-1-INPUT -m state – NEW -m tcp -p tcp –dport 6379 -j ACCEPT”到文件中;
重启防火墙设置:service iptables restart
3、设置redis服务器可以允许任何主机连接:利用src/redis-server启动时没有加载配置文件的,这时候将利用默认配置启动服务器,这时redis服务器是允许任何主机连接的;但是如果在redis启动时指定了配置文件(./src/redis-server redis.conf),那么需要修改配置文件,找到“bind 127.0.0.1”这一行,并且注释掉
java连接linux里的redis数据库报:Could not get a resource from the pool解决方法
4、设置redis可以被远程主机连接:如果redis开启了保护模式(配置文件中设置:protected-mode yes)那么有两种方式可以连接redis:1:通过在配置文件中绑定ip地址访问,如bind 127.0.0.1,这样就只能本机访问;2:通过设置给redis设置连接密码,配置文件中配置:requirepass redis,这样只要输入正确密码都能连接上redis。如果redis没有开启保护模式,那么可以不进行绑定和不用设置密码就可以连接redis。一般情况下是开启了保护模式。如果在保护模式下,没有绑定ip,也没有设置登录密码,那么在代码中连接redis是不被允许的,会报DENIED Redis is running in protected mode because protected mode is enabled…这样的错误。如果启动redis服务器时没有指定配置文件,可以通过“CONFIG SET requirepass password ”命令设置连接密码,这种设置无需重启,但是当redis服务器重新连接时将丢失密码设置;如果在启动时指定了redis的配置文件,则需求改动配置文件设置需要密码登录。找到配置文件中的“# requirepass foobared”行,去掉“#”,foobared就是要设置的密码,可以自行设定:
java连接linux里的redis数据库报:Could not get a resource from the pool解决方法

经过以上步骤的设置,那么redis服务器就可以被远程主机进行连接了,可以在远程主机通过telnet进行测试(测试需要启动redis服务器):
java连接linux里的redis数据库报:Could not get a resource from the pool解决方法
回车后可以看到已经连上redis了:
java连接linux里的redis数据库报:Could not get a resource from the pool解决方法