背景

        目前在使用springboot,完成一个小项目,需要使用到redis。因为redis安装在阿里云的centOS7中,导致始终无法连接上redis。在经过若干问题排查后,终于能够从外部进行连接。接下来描述3种,无法在外部连接服务器中redis的解决方案。最后一个方案,才是解决本次问题的关键,各位一定要看看最后一种。

解决

方案一

放开6379端口,使得6379端口能够从外部访问

在阿里云控制台找到云服务器选项,按照图示步骤,进行配置

如果是虚拟机的话,直接关闭防火墙即可

查看防火墙的状态:
service iptables status   或者使用    iptables -L
systemctl stop firewalld.service            #但是开机之后还会启动防火墙
systemctl disable firewalld.service         #禁止firewall开机启动

 但是服务器的话,不推荐直接管理防火墙

方案二

进到redis的安装目录,修改redis的配置文件,redis.conf

 共需要修改4个地方

1、注释掉 bind 127.0.0.1 -::1

2、 将protected-mode 的值改为 no ,默认为 yes

 

 3、为redis设置登录密码,默认requirepass是被注释的,需要打开注释,并设置密码

requirepass 你的密码

4、设置连接超时时间,默认值为0

 

然后重启redis服务器

 方案三

这一步的内容,让我找了将近4个小时的问题。

因为我linux安装了宝塔面板,而且宝塔面板里面,还会对阿里云控制台的安全组里面设置的暴露规则进行拦截。例如,我安全组里面设置暴露端口6379,那么如果我没在宝塔面板里面打开6379端口,外部是依然无法访问6379这个端口的。这也是我为什么不能从外部连接服务器redis的原因。

设置步骤

问题解决! 

其他

在springboot中,设置redis的连接超时时间。若超时时间过短,则会造成还未连接上,就超时了。

相关yml文件配置如下

spring:
  #redis连接配置
  redis:
    # 超时时间
    timeout: 10000
    # 服务器地址
    host: 你服务器地址
    # 服务器端口
    port: 6379
    # 数据库
    database: 0
    # 密码
    password: 有则填,没有的话可以直接空着,或者不添加该属性
    lettuce:
      pool:
        #最大连接数,默认8
        max-active: 1024
        #最大连接阻塞等待时间,默认-1
        max-wait: -1
        #最大空闲连接
        max-idle: 200
        #最小空闲连接
        min-idle: 5

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐