JedisConnectionFactory setHostName 已弃用
Posted
技术标签:
【中文标题】JedisConnectionFactory setHostName 已弃用【英文标题】:JedisConnectionFactory setHostName is deprecated 【发布时间】:2018-08-07 21:16:17 【问题描述】:这将是我第一次将 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 方法已被弃用(即使我使用的是教程中的版本)。
我想知道是否有人有一个使用非弃用 API 调用的简单“获取连接到 redis 的弹簧数据”示例?
【问题讨论】:
【参考方案1】:在 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);
【讨论】:
所以 application.properties spring configuration vars likespring.redis.password
和 spring.redis.host
不起作用,你必须通过代码配置它们?
@xref 一些应用程序可能同时有多个 redis 连接,因此必须以编程方式对其进行配置。【参考方案2】:
@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;
【讨论】:
你能发布关于jedisClientConfiguration的详细信息吗?【参考方案3】:除了@Thang Le 的回复
您可以配置读取操作的超时时间,添加以下行:
jedisClientConfigurationBuilder.readTimeout(Duration.ofSeconds(1));
这是你使用时可以获得的值:
jedisConFactory.getTimeout()
【讨论】:
以上是关于JedisConnectionFactory setHostName 已弃用的主要内容,如果未能解决你的问题,请参考以下文章
如何基于 Spring Boot 框架配置 JedisConnectionFactory 的超时时间
如何将 JedisConnectionFactory 配置为使用 SSL,以免出现错误:“JedisDataException:ERR 未加密连接被禁止”?