如果有 docker compose of Redis 和 Redis Commander,则使用 java 代码连接到 Redis
Connect to Redis using java code if there is docker compose of Redis and Redis Commander
我正在尝试使用下面的 Java 代码和 Jedis 库连接到 Redis,但是连接失败,有人可以帮忙解决这个问题吗?
Jedis jedis = new Jedis("localhost");
String pingResponse = jedis.ping();
System.out.println("ping should return pong" + pingResponse);
这是我的 docker-compose 文件
version: '3'
services:
redis:
container_name: redis
hostname: redis
image: redis
redis-commander:
container_name: redis-commander
hostname: redis-commander
image: rediscommander/redis-commander:latest
restart: always
environment:
- REDIS_HOSTS=local:redis:6379
ports:
- "8082:8081"
下面是我得到的异常:
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Failed connecting to host redis:6379
at redis.clients.jedis.Connection.connect(Connection.java:204)
at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:100)
at redis.clients.jedis.Connection.sendCommand(Connection.java:125)
at redis.clients.jedis.Connection.sendCommand(Connection.java:120)
at redis.clients.jedis.BinaryClient.ping(BinaryClient.java:113)
at redis.clients.jedis.BinaryJedis.ping(BinaryJedis.java:188)
at com.altimetrik.demo.bean.Sample.main(Sample.java:23)
我觉得你的Redis容器没有对外暴露端口进行连接,只有commander暴露了8002。(尝试连接到localhost:8002)。 docker compose 创建了一个默认的“桥接”网络,因此容器可以相互通信,但不能在外部通信,除非您公开端口。指挥官可以连接到 REDIS,因为他们在同一个网络上。
我正在尝试使用下面的 Java 代码和 Jedis 库连接到 Redis,但是连接失败,有人可以帮忙解决这个问题吗?
Jedis jedis = new Jedis("localhost");
String pingResponse = jedis.ping();
System.out.println("ping should return pong" + pingResponse);
这是我的 docker-compose 文件
version: '3'
services:
redis:
container_name: redis
hostname: redis
image: redis
redis-commander:
container_name: redis-commander
hostname: redis-commander
image: rediscommander/redis-commander:latest
restart: always
environment:
- REDIS_HOSTS=local:redis:6379
ports:
- "8082:8081"
下面是我得到的异常:
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Failed connecting to host redis:6379
at redis.clients.jedis.Connection.connect(Connection.java:204)
at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:100)
at redis.clients.jedis.Connection.sendCommand(Connection.java:125)
at redis.clients.jedis.Connection.sendCommand(Connection.java:120)
at redis.clients.jedis.BinaryClient.ping(BinaryClient.java:113)
at redis.clients.jedis.BinaryJedis.ping(BinaryJedis.java:188)
at com.altimetrik.demo.bean.Sample.main(Sample.java:23)
我觉得你的Redis容器没有对外暴露端口进行连接,只有commander暴露了8002。(尝试连接到localhost:8002)。 docker compose 创建了一个默认的“桥接”网络,因此容器可以相互通信,但不能在外部通信,除非您公开端口。指挥官可以连接到 REDIS,因为他们在同一个网络上。