错误redis客户端jedis HostAndPort无法解析localhost地址

时间:2017-05-30 03:01:57

标签: java spring-boot redis

我在AWS上托管我的应用程序。我已将我的属性文件配置如下

spring.redis.host = {AWS主机端点} spring.redis.port = 6379

我的应用程序之间的连接有效。但是,spring会在连接到aws主机端点之前首先尝试连接到本地主机,因此会抛出错误。错误如下所示。

2017-05-30 10:37:58.203 [main] ERROR redis.clients.jedis.HostAndPort:
 cant resolve localhost address

我如何解决这个问题,谢谢你

EDIT 下面显示了我的Redis配置类

@Configuration
@EnableCaching
public class RedisCacheConfig {

    final Logger logger = LoggerFactory.getLogger(RedisCacheConfig.class);

    JedisConnectionFactory connectionFactory;

    @Autowired
    public RedisCacheConfig(JedisConnectionFactory connectionFactory) {
        this.connectionFactory = connectionFactory;
    }

    @Bean
    @Autowired
    public CacheManager getCacheManager(CacheExpiration expiration) {
        RedisCacheManager manager = new RedisCacheManager(getRedisTemplate());
        manager.setExpires(expiration.getMapper());
        //expiration.getMapper();
        return manager;
    }

    @Bean
    public RedisTemplate getRedisTemplate() {
        RedisTemplate template = new RedisTemplate();
        template.setConnectionFactory(connectionFactory);
        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return template;
    }
}

1 个答案:

答案 0 :(得分:4)

这个错误似乎是6月15日在Jedis中fixed所以应该包含在下一个版本中。

与此同时,您始终可以构建最新的master并在项目中使用该JAR。请记住在项目中包含Jedis的依赖项。

从最新的Jedis master(目前版本为3.0.0-SNAPSHOT)构建JAR:

$ git clone https://github.com/xetorthio/jedis.git
$ cd jedis
$ mvn -Dmaven.test.skip=true package
$ mkdir -p /path/to/your/project/lib
$ cp target/jedis-3.0.0-SNAPSHOT.jar /path/to/your/project/lib/

包含依赖项的示例 build.gradle 代码段:

dependencies {
    file project.file("lib/jedis-3.0.0-SNAPSHOT.jar")
    compile "org.slf4j:slf4j-api:1.7.22"
    compile "org.apache.commons:commons-pool2:2.4.2"
}

如果您想使用最新版本,只需在顶部添加补丁,您可以将其选择到2.9.0标记,如下所示:

$ git clone https://github.com/xetorthio/jedis.git
$ cd jedis
$ git checkout jedis-2.9.0
$ git cherry-pick 42a6523041e710087640ceaab11d3abcd34f3a72

这会导致您必须合并的冲突,但kdiff3会自动为我解决所有冲突,因此根据您使用的合并工具,您可能无需执行任何操作{{ 1}}然后按[回车]。

在解决了您刚刚构建的冲突后,您最终会得到一个名为 jedis-2.9.0-SNAPSHOT.jar 的JAR。