今天项目做redis迁移,中途一直报这个连接异常。从网上找了很多分析文章,大致分为以下几个原因:
1.redis服务器down掉了,检查redis服务器是否正常。
2.redis配置,当前连接数,是否已经达到最大连接次数,maxTotal?
3.环境网络权限是否没有开放
上面三个原因,第一个明显不可能,因为服务是新的redis服务器,运行正常,使用redis-cli info 查看连接数,也远远低于设置的最大连接数,那么是不是环境权限的问题呢?这个应该是不存在的,因为service服务器与redis服务器的所有相应防火墙该放开限制的 已经完全放开。不过这个权限问题,倒是给了自己一个解决思路:
首先,我将redis ip 和port 设置为service 服务机器本身的redis,启动服务测试,服务功能完全没有问题,redis可以正常连接。
其次,将redis IP 和port 配置为新redis 服务器IP和port,服务异常,无法正常连接。那么既然网络权限没有问题,是否是因为更换机器,redis相关配置没有做相应的更改呢?
打开redis 配置文件,sudo vim /etc/redis/redis.conf ,摘部分配置文件如下
# 指定Redis监听端口,默认端口为6379
# 如果指定0端口,表示Redis不监听TCP连接
port 6379
# 绑定的主机地址
bind 127.0.0.1
redis 默认安装后,bind 默认绑定localhost ,也就是说,只接受来自本机的连接请求。若想让外网连接该redis,那么有以下处理:1》注释掉bind 2》同时绑定本机ip,而非localhost。这就是项目中,迁移后,为何无法连接使用redis的原因,忘记了修改redis的默认配置导致。
另外,还有一点需要特别注意,redis配置中,还有一个配置 protected-mode 默认是yes,需要改为no ,这样,连接redis的时候,就不需要用户名和密码了。
修改完毕后,重启redis。
至此,问题搞定,收工,陈述上文,以作轧记,以便后续使用。