JedisConnectionFactory的setHostName方法已经被弃用。

36

这将是我第一次将Spring与Redis连接。Jedis连接工厂的文档:http://www.baeldung.com/spring-data-redis-tutorial

提供以下代码:

@Bean
JedisConnectionFactory jedisConnectionFactory() {
    JedisConnectionFactory jedisConFactory
            = new JedisConnectionFactory();

    jedisConFactory.setHostName("localhost");
    jedisConFactory.setPort(6379);
    return jedisConFactory;
}

看起来不错,但我的IDE告诉我setHostName和setPort方法已经被弃用了(即使我使用的是教程中的版本)。

我想知道是否有人有一个简单的示例,“将Spring Data连接到Redis”,并使用非弃用的API调用?

3个回答

61

使用 Spring Data Redis 2.0 后,这些方法已被弃用。现在您需要使用 RedisStandaloneConfiguration 进行配置。

参考文献: https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/connection/jedis/JedisConnectionFactory.html#setHostName-java.lang.String-

示例:

JedisConnectionFactory jedisConnectionFactory() {
    RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration("localhost", 6379);
    redisStandaloneConfiguration.setPassword(RedisPassword.of("yourRedisPasswordIfAny"));
    return new JedisConnectionFactory(redisStandaloneConfiguration);
}

1
所以,像spring.redis.passwordspring.redis.host这样的Spring配置变量application.properties中将不起作用,你必须通过代码进行配置吗? - xref
@xref 一些应用程序可能同时具有多个Redis连接,因此必须通过编程进行配置。 - Chris

29
@Bean
    JedisConnectionFactory jedisConnectionFactory() {

        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
        redisStandaloneConfiguration.setHostName("localhost");
        redisStandaloneConfiguration.setPort(6379);
        redisStandaloneConfiguration.setDatabase(0);
        redisStandaloneConfiguration.setPassword(RedisPassword.of("password"));

        JedisClientConfigurationBuilder jedisClientConfiguration = JedisClientConfiguration.builder();
        jedisClientConfiguration.connectTimeout(Duration.ofSeconds(60));// 60s connection timeout

        JedisConnectionFactory jedisConFactory = new JedisConnectionFactory(redisStandaloneConfiguration,
                jedisClientConfiguration.build());

        return jedisConFactory;
    }

2
你能发布有关jedisClientConfiguration的详细信息吗? - Jeff Cook

0
除了@Thang Le的回答之外,
您可以配置读取操作的超时时间,只需添加此行:

jedisClientConfigurationBuilder.readTimeout(Duration.ofSeconds(1));

当使用时,您可以获得以下值:

jedisConFactory.getTimeout()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接