[REDIS] 레디 스 봄 데이터 레디 스 SSL을 사용하는 경우 "Jedis 연결을 가져올 수 없습니다"
REDIS레디 스 봄 데이터 레디 스 SSL을 사용하는 경우 "Jedis 연결을 가져올 수 없습니다"
나는 SSL은 (AWS에서 Elasticache) 레디 스를 활성화하여, 봄 데이터 레디 스를 사용하여 연결에 어려움을 겪고 있어요.
(나는 봄과 일반 Jedis 또는 Jedis 풀을 사용하는 경우 연결이 잘 작동합니다).
다음 코드는 다음과 같습니다
@Value("${vcap.services.myredis.credentials.host}")
private String redisHost;
@Value("${vcap.services.myredis.credentials.password}")
private String redisPassword;
@Value("${vcap.services.myredis.credentials.port}")
private String redisPort;
public RedisTemplate<String, Object> redisTemplate() {
final RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
String hostUri = "rediss://:" + redisPassword + "@" + redisHost + redisPort;
JedisShardInfo info = new JedisShardInfo(hostUri);
JedisConnectionFactory conn = new JedisConnectionFactory(info);
conn.afterPropertiesSet();
template.setConnectionFactory(conn);
template.setValueSerializer(new GenericToStringSerializer<Object>(Object.class));
return template;
}
}
RedisTemplate 사용 :
@Autowired
private RedisTemplate<String, String> redistemplate;
public void api2() {
HashOperations<String, Object, Object> hashOperations = redistemplate.opsForHash();
hashOperations.put("KEY", "1", "one");
}
}
RedisTemplate을 사용하는 모든 작업은 예외 아래가 발생합니다 :
노트 :
어떤 도움이나 포인터를 부탁드립니다.
해결법
-
==============================
1.그것이 수행하는 구성으로 모호성을 원인으로 JedisShardInfo을 사용하지 마십시오. JedisShardInfo를 받아들이는 생성자는 봄 데이터 레디 스 2.0에서 더 이상 사용되지 않습니다. 대신 재산 기반 구성을 사용합니다 :
그것이 수행하는 구성으로 모호성을 원인으로 JedisShardInfo을 사용하지 마십시오. JedisShardInfo를 받아들이는 생성자는 봄 데이터 레디 스 2.0에서 더 이상 사용되지 않습니다. 대신 재산 기반 구성을 사용합니다 :
JedisConnectionFactory conn = new JedisConnectionFactory(); conn.setHostName(redisHost); conn.setPort(redisPort); conn.setUseSsl(true);
-
==============================
2.나는 JedisPool로하지 봄 JedisShardInfo로했다, 그러나 유사한 문제가 발생했습니다. 나는 그것이 본질적으로 같은 문제가 있다고하지만 생각합니다. SSL과 AWS Elasticache 레디 스 클러스터에 연결할 때 내가 얻을 것이다 활성화
나는 JedisPool로하지 봄 JedisShardInfo로했다, 그러나 유사한 문제가 발생했습니다. 나는 그것이 본질적으로 같은 문제가 있다고하지만 생각합니다. SSL과 AWS Elasticache 레디 스 클러스터에 연결할 때 내가 얻을 것이다 활성화
redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketException: Connection reset
어떻게 내 문제를 해결하는 것은 jedis 2.9.0을 사용하고 같은 내 JedisPool을 시작했다 :
String host = "someHost"; // The primary endpoint of the cluster JedisPool jedisPool = new JedisPool("rediss://" + host + ":6379");
그것은 SSL을 사용하지 않는 URI 하나로서 여기에 문자열 생성자를 사용하는 것이 중요합니다.
-
==============================
3.당신은 AWS 탄성 레디 스를 언급,하지만 당신은이 클러스터 레디 스 또는 단일 노드 레디 스 기반의 여부를 지정하지 않았다?
당신은 AWS 탄성 레디 스를 언급,하지만 당신은이 클러스터 레디 스 또는 단일 노드 레디 스 기반의 여부를 지정하지 않았다?
봄 데이터 레디 스 2.2은 SSL과 클러스터에 대한 지원합니다. https://jira.spring.io/browse/DATAREDIS-974
from https://stackoverflow.com/questions/48493941/cannot-get-jedis-connection-when-using-ssl-with-redis-and-spring-data-redis by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 어떻게 레디 스에서 검색하려면? (0) | 2020.01.24 |
---|---|
[REDIS] 노드 레디 스를 사용하여 해시 키의 모든 필드와 값을 가져옵니다 (0) | 2020.01.24 |
[REDIS] 주장 만료와 레디 스 큐 (0) | 2020.01.24 |
[REDIS] 토네이도 셀러리는 gen.Task 또는 콜백을 사용할 수 없습니다 (0) | 2020.01.24 |
[REDIS] 레디 스의 다른 명령의 결과를 전달 (0) | 2020.01.24 |