Spring 中的 Jedis 连接无法在 Redis 上进行身份验证
Jedis connection in Spring fails to authenticate on Redis
我有一个 spring 引导应用程序通过 tls 和密码连接到 Redis。
我正在使用以下配置来实例化 RedistTemplate 和 JedisConnection
@Bean
JedisConnectionFactory jedisConnectionFactory() {
RedisStandaloneConfiguration conf = new RedisStandaloneConfiguration(host,port);
conf.setPassword(RedisPassword.of("myPassword"));
JedisConnectionFactory jedisConFactory = null;
JedisClientConfiguration confJedis = JedisClientConfiguration.builder().useSsl().build();
jedisConFactory = new JedisConnectionFactory(conf,confJedis);
//jedisConFactory.setPassword("myPassword");
return jedisConFactory;
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
我收到以下错误:
class org.springframework.dao.InvalidDataAccessApiUsageExceptionNOAUTH Authentication required.; nested exception is redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.
这似乎是 Redis 未收到密码的错误。
在 redis 上启用 TLS 配置之前,我使用了这个配置:
@Bean
JedisConnectionFactory jedisConnectionFactory() {
RedisStandaloneConfiguration conf = new RedisStandaloneConfiguration(host,port);
conf.setPassword(RedisPassword.of("myPassword"));
JedisConnectionFactory jedisConFactory = null;
jedisConFactory = new JedisConnectionFactory(conf);
return jedisConFactory;
}
它工作得很好。
因此,我在 Jedis 配置中使用 TLS 设置密码的“方式”中的某些内容不起作用,我什至使用了已弃用的方法(在上面的代码片段中进行了评论):
//jedisConFactory.setPassword("myPassword");
看看它是否可行但没有成功。
有人看到我做错了什么吗?
我遇到了同样的问题,通过在代码中添加 .and().usePooling() 解决了这个问题,如下所示:
JedisClientConfiguration confJedis = JedisClientConfiguration.builder().useSsl().and().usePooling().build();
我找到了答案here
我有一个 spring 引导应用程序通过 tls 和密码连接到 Redis。
我正在使用以下配置来实例化 RedistTemplate 和 JedisConnection
@Bean
JedisConnectionFactory jedisConnectionFactory() {
RedisStandaloneConfiguration conf = new RedisStandaloneConfiguration(host,port);
conf.setPassword(RedisPassword.of("myPassword"));
JedisConnectionFactory jedisConFactory = null;
JedisClientConfiguration confJedis = JedisClientConfiguration.builder().useSsl().build();
jedisConFactory = new JedisConnectionFactory(conf,confJedis);
//jedisConFactory.setPassword("myPassword");
return jedisConFactory;
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
我收到以下错误:
class org.springframework.dao.InvalidDataAccessApiUsageExceptionNOAUTH Authentication required.; nested exception is redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.
这似乎是 Redis 未收到密码的错误。
在 redis 上启用 TLS 配置之前,我使用了这个配置:
@Bean
JedisConnectionFactory jedisConnectionFactory() {
RedisStandaloneConfiguration conf = new RedisStandaloneConfiguration(host,port);
conf.setPassword(RedisPassword.of("myPassword"));
JedisConnectionFactory jedisConFactory = null;
jedisConFactory = new JedisConnectionFactory(conf);
return jedisConFactory;
}
它工作得很好。 因此,我在 Jedis 配置中使用 TLS 设置密码的“方式”中的某些内容不起作用,我什至使用了已弃用的方法(在上面的代码片段中进行了评论):
//jedisConFactory.setPassword("myPassword");
看看它是否可行但没有成功。
有人看到我做错了什么吗?
我遇到了同样的问题,通过在代码中添加 .and().usePooling() 解决了这个问题,如下所示:
JedisClientConfiguration confJedis = JedisClientConfiguration.builder().useSsl().and().usePooling().build();
我找到了答案here