JedisConnectionFactory setHostName 已弃用

问题描述 投票:0回答:4

这将是我第一次将 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 数据连接到 Redis”示例,该示例使用未弃用的 API 调用?

redis spring-data jedis
4个回答
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);
}

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;
    }

0
投票

除了@Thang Le 的回复

您可以配置读取操作的时间,添加此行:

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

这是您使用时可以获得的值:

jedisConFactory.getTimeout()


0
投票

你应该尝试这个:: 在 pom.xml 中添加给定的依赖项并使用其余模板配置。

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>
----------------------------------------
@Configuration
@EnableCaching
public class RedisConfig {

 @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return template;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.