docker连接宿主机redis,提示Connection refused

目录

一、测试环境

二、问题现象

三、问题总结


一、测试环境

centos 7

redis-5.0.14

docker-26.0.1

二、问题现象

服务器重启后docker连接宿主机redis,提示Connection refused

Reconnecting, last destination was /172.25.xxx.x:6379                            
Cannot reconnect to [172.25.xxx.x:6379]: Connection refused: /172.25.xxx.x:6379

出现连接拒绝,首先想到的是确认redis 服务是否已经启动,在宿主机上执行以下命令:

ps -ef|grep redis
root       997     1  0 11:36 ?        00:00:04 /usr/local/redis/bin/redis-server *:6379
root      3449  2538  0 12:34 pts/0    00:00:00 grep --color redis

发现redis 服务正常,然后用本机使用redis工具连接是否可以连接,测试发现本机的连接工具可以正常远程连接redis 。接着在宿主机测试是否可以连接,输入一下命令(需要切换到redis 的安装目录):

./redis-cli -h 172.25.xxx.x -p 6379

然后执行auth输入密码,连接成功,执行ping命令,回复PONG,说明配置文件读取都没有问题。然后上网搜索,发现有一篇文章中说,配置文件的protected-mode改为no还要再执行一下命令,宿主机连接redis,并执行命令(注意大小写):

CONFIG SET protected-mode no

再次启动应用,应用程序成功连接上了redis。

三、问题总结

上面方案的前提是保证你的redis之前能正常连接,如果时第一次连接建议按照如下步骤进行检查:

1、确定redis服务启动

ps -ef|grep redis

2、确定redis读取正确的配置文件redis.conf

INFO SERVER

3、redis服务器地址和密码正确

4、服务器防火墙关闭,如果时云服务器保证redis端口(一般为6379)可以正常访问

5、关闭redis的保护模式

protected-mode no

6、bind 127.0.0.1 ::1注释掉

bind 127.0.0.1 ::1

7、宿主机上执行config set protected-mode no

8、宿主机本机可以正常连接redis

<think>好的,我现在需要帮助用户在IDEA中配置项目,使其通过Docker容器连接Redis。首先,我得理清楚整个流程,确保每个步骤都正确无误。 首先,用户已经提到了DockerRedis的相关引用,我需要参考这些资料。根据引用[5],启动Redis容器的命令是`docker run --name=redis -d -p 6379:6379 --restart=always redis`。这说明用户需要先确保Redis容器已经在运行,并且端口映射正确。接下来,用户需要在IDEA中配置项目连接这个容器。 然后,参考引用[4],SpringBoot 2.0默认使用Lettuce客户端,所以用户的项目可能已经依赖了Spring Data Redis。需要确认pom.xml或build.gradle中有相关的依赖,比如`spring-boot-starter-data-redis`。如果没有,需要添加。 接下来是配置文件的部分。在application.properties或application.yml中设置Redis连接信息。根据引用[2]和[3],Redis容器通常映射到主机的6379端口,且可能需要密码认证。例如,如果设置了密码,需要在配置文件中添加`spring.redis.password=123456`。这里需要注意,如果Redis没有设置密码,这一项可以省略。 另外,网络问题也是一个关键点。如果Docker容器运行在本地,IDEA项目可以通过localhost:6379连接。但如果Docker运行在远程服务器或使用不同的网络配置,可能需要调整主机地址。例如,在Docker Compose中,如果服务间通过自定义网络通信,需使用服务名作为主机地址。 测试连接的部分,用户需要编写一个测试类,注入`RedisTemplate`或`StringRedisTemplate`,并执行简单的操作,如设置和获取键值,以确认连接是否成功。如果出现连接错误,需要检查防火墙设置、端口映射是否正确,以及Redis配置是否允许外部连接。 可能遇到的问题包括:端口被占用、防火墙阻止连接、密码配置错误、Redis配置文件未设置绑定地址或保护模式。例如,如果Redis容器没有正确配置绑定到0.0.0.0,可能会导致外部无法连接,此时需要修改Redis的配置文件,或者在启动容器时添加相应的参数。 此外,用户可能需要进入Redis容器内部进行调试,如使用`docker exec -it redis redis-cli`(引用[2]和[3])来检查Redis服务是否正常运行,执行`ping`命令查看响应,或者检查配置参数是否正确。 总结步骤:1. 启动Redis容器;2. 添加项目依赖;3. 配置连接信息;4. 测试连接。需要确保每个环节都正确,逐步排查可能出现的问题。</think>### IDEA项目通过Docker连接Redis配置步骤 #### 1. 启动Redis容器 确保已正确运行Redis容器,端口映射为`6379:6379`(默认配置): ```bash docker run --name=redis -d -p 6379:6379 redis ``` 若需设置密码,添加`--requirepass`参数[^5]: ```bash docker run --name=redis -d -p 6379:6379 redis --requirepass "123456" ``` #### 2. 添加Spring Data Redis依赖 在项目的`pom.xml`中添加依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` #### 3. 配置Redis连接参数 在`application.properties`或`application.yml`中设置: ```properties spring.redis.host=localhost spring.redis.port=6379 # 若设置了密码 spring.redis.password=123456 ``` #### 4. 测试Redis连接 编写测试类验证连接: ```java @SpringBootTest public class RedisTest { @Autowired private StringRedisTemplate redisTemplate; @Test public void testConnection() { redisTemplate.opsForValue().set("testKey", "Hello Redis"); String value = redisTemplate.opsForValue().get("testKey"); System.out.println("Value from Redis: " + value); } } ``` #### 常见问题排查 - **连接拒绝**:检查Docker容器是否运行(`docker ps`),确认端口映射正确[^5]。 - **密码错误**:确保`spring.redis.password`与容器启动时设置的密码一致[^2]。 - **网络问题**:若Docker运行在远程服务器,需将`spring.redis.host`改为服务器IP,并开放防火墙端口[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值