当前位置: 首页 > 知识库问答 >
问题:

如果有Redis和Redis指挥官的docker组合,则使用java代码连接到Redis

龙俭
2023-03-14

我试图连接到Redis,使用Jedis库下面的Java代码,但连接失败了,可以在这方面有什么帮助吗?。

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)

共有1个答案

东门文斌
2023-03-14

我认为您的Redis容器没有为连接公开外部端口,只有指挥官公开8002。(尝试连接到本地主机:8002)。docker compose创建了一个默认的“桥”网络,这样容器就可以在它们之间进行对话,但除非您公开端口,否则不能在外部进行对话。指挥官可以连接到REDIS,因为他们在同一个网络上。

 类似资料:
  • 我使用windows docker工具箱,我很困惑我错过了什么。我想使用redis commander(https://www.npmjs.com/package/redis-Commander)和来自docker Hub的docker图像redis。 我使用了上面链接中的docker-compose.yml: 在 工作,我可以到达服务器和er本地:6379 但是是什么意思 有什么帮助来正确设置这

  • 问题内容: 我是Redis的新手…我最近刚拿起Redisent来在PHP中使用Redis …并且我玩得很开心!但是,我注册了Redis服务,并一直在努力使用该服务… URI字符串如下: redis:// [用户名]:[pass] @ [服务器] .redistogo.com:[端口] / Redisent客户端只需输入主机名和端口…并且我没有地方输入用户名/密码…:-/我也一直在摆弄fsockop

  • 当我试图按照以下部署指南连接到主节点时,我面临着MasternotFounderRorr:https://docs.bitnami.com/tutorials/deploy-redis-sentinel-production-cluster/ 连接主Redis Sentinel节点的代码是: 我面对红魔。哨兵。MasternotFounderRorr:没有为“MyMaster”错误找到master

  • 我试图与一个springboot应用程序连接到2个不同的redis实例:一个用作数据库,一个只用作缓存。我添加了不同的连接工厂和不同名称的redis模板,我使用@Qualifer来链接它们。我试图禁用从自动配置类RedisAutoConfiguration,但没有工作。 我总是收到这个错误: 包装人:org。springframework。豆。工厂UnsatifiedPendencyExcepti

  • 问题内容: 我正在尝试通过代码访问Redis服务器,但未连接。但是,如果我猛击redis容器,我可以访问redis-cli。 docker-compose.yml看起来像这样 Dockerfile_redis 当我尝试使用此代码连接到Redis服务器时 它发出此警告 有谁知道如何将Redis容器连接到PHP容器? 问题答案: 你的问题 Docker Compose 为不同的服务创建了单独的dock

  • 我一直在尝试使用Docker-Compose将Django容器连接到Redis。经过几个小时的修改Docker和Django配置,并尝试了不同的运行方式,我终于发现Redis正在向主机广播。 null 最后我把Redis的Django IP配置改成了Docker主机IP,它工作得很好... 有没有人知道配置所有东西的方法,让Django在内部Docker网络上而不是在外部主机上查找Redis? 我