0


redis连接不上,两种解决方式

今天某个项目的redis连不上了,将自己用到的两个解决办法写篇记录(实际使用时方法二选一即可)。

redis连接不上,两种解决方式

我们最初在项目的application.yml文件上的redis配置是服务器ip+端口,但是这样的配置项目并没有成功连接redis:

    redis:
    isRedisCache:1   #是否使用redis缓存
    database:0       # Redis数据库索引(默认为0)
    host:176.17.0.9   # Redis服务器地址
    port:6379        # Redis服务器连接端口
    password:123456  # Redis服务器连接密码(默认为空)
    timeout:1000    # 连接超时时间(毫秒)

一、首先排查本地redis连接有没有问题

1. 在服务器上查看redis
[root@iZxxxxxxxxx20t8shdhZ~]# docker ps
CONTAINER ID   IMAGE                         COMMAND                  CREATED          STATUS          PORTS                                      NAMES
137f72546f00   redis                         "docker-entrypoint.s…"10 days ago      Up10 days      0.0.0.0:6379->6379/tcp                     redis
2. 进入容器测试连接

进入容器:docker exec -it 137f72546f00 bash
连接redis:redis-cli -h ip地址 -p 端口
有提示密码则输入:auth 密码, 如 auth 123456
如果能顺利连接,则使用ping命令查看是否能ping通pong。
以下代码举例演示:

[root@iZxxxxxxxxx20t8shdhZ~]# docker exec -it 137f72546f00 bash
root@137f72546f00:/data# redis-cli -h 176.17.0.9-p 6379172.17.0.9:6379> ping
(error) NOAUTH Authentication required.172.17.0.9:6379> auth 123456
OK
172.17.0.9:6379> ping
PONG
172.17.0.9:6379>

可以看出本地连接是没问题的,redis可以ping通,则表示本地连接redis没有问题

二、连接redis的两种方式(二选一使用即可)

通过上面的测试方式知道了redis本身没问题,那么我们要实现项目的redis连接可以使用以下的两种办法:一是配置阿里云远程策略,二是用当前服务器上的redis network 地址替换作为redis的连接主机地址。

1. 第一种:配置远程策略

项目连接不成功,说明没有开通远程策略。那么就针对配置文件中的服务器地址(如下图)
在这里插入图片描述
然后登录阿里云/腾讯云找到云服务器的安全组然后进行配置规则(具体怎么配置可以自行百度):
在这里插入图片描述
保存之后项目就可以正常连接redis了。

2. 第二种:使用redis network 地址替换作为redis的连接主机地址

首先要查找到redis的network地址:docker inspect redis

[root@iZxxxxxxxxx20t8shdhZ~]# docker inspect redis
    *前面的内容省略,只需要关注从下面的"IPAddress":*"Networks":{"master":{"IPAMConfig":null,"Links":null,"Aliases":["redis","137f72546f59"],"NetworkID":"507fcefa41123f2f2124467100e6ef772ef9dad7384e363a6c6c02433014ffa9","EndpointID":"734e9bf66314ce664382b1e6a5beada582789afc17dfdc1ee664462a59620e1a","Gateway":"174.12.0.1","IPAddress":"174.16.0.2","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:13:00:03","DriverOpts":null}}

然后将这个174.16.0.2地址放到项目的application.yml文件里作为redis连接主机:

    redis:
    isRedisCache:1   #是否使用redis缓存
    database:0       # Redis数据库索引(默认为0)
    host:174.16.0.2   # Redis服务器的network地址
    port:6379        # Redis服务器连接端口
    password:123456  # Redis服务器连接密码(默认为空)
    timeout:1000    # 连接超时时间(毫秒)

重新打包部署,就可以正常连接了。

以上就是两种连接redis的办法。

注意:
如果使用第一种办法即去阿里云配置策略,则yml文件中的redis主机地址就还是服务器本身地址,不用更改配置文件;
如果使用第二种network 地址,则不用配置任何策略。但是如果想在服务器中进入redis容器连接则需要使用network这个地址+端口,不使用服务器本身地址,否则无法连接。

标签: redis docker linux

本文转载自: https://blog.csdn.net/Ivy_Xinxxx/article/details/125721865
版权归原作者 Ivy_xinxxx 所有, 如有侵权,请联系我们删除。

“redis连接不上,两种解决方式”的评论:

还没有评论