2017-01-14 2 views
0

방금 ​​Redis에 대해 알기 시작했습니다. 내 노트북에 설치하고 간단한 자바 클라이언트를 썼다. Web 기반 응용 프로그램에서 들어오는 쿼리를 처리하는 Elasticsearch 인스턴스가 있습니다. 꽤 빠르지 만, 고객을위한 응답 시간을 높이기 위해 탄성 검색 인스턴스를 Redis로 '선행'할 수있는 실질적인 사례가 있는지 궁금합니다. 내 매우 제한된 redis 지식에서, 나는 Redis에서 ES 쿼리의 응답을 저장하는 것이 실용적 일지 또는 어떤 가치를 제공 할 것인지 궁금합니다. 보다 일반적으로, 누군가 ES와 Redis가 함께 사용되는 방법의 예를 나에게 줄 수 있습니까? 감사합니다ES를위한 Jedis '프런트 엔드'

답변

1

그림에서 Redis가있는 하나의 사용 사례는 Logstash를 통해 Elasticsearch에 문서를로드 할 때 temporary buffer으로 사용하는 것입니다.

Redis는 기본적으로 캐시이기 때문에 쿼리의 백 엔드 서비스가 충분히 빠르지 않기 때문에 Redis는 기본적으로 캐시이므로 데이터를 빠르게 사용할 수있게하는 것이 주된 목적입니다. Elasticsearch 인스턴스가 "꽤 빠름"(그게 무슨 뜻인지)이라고 말하면서 왜 응답을 캐시하고 싶습니까?

그림에 캐시를 넣을 때 발생하는 새로운 새로운 문제가 있습니다. 가장 중요한 것은 캐시를 언제 만료 시키나요? 따라서 Elasticsearch의 데이터가 상당히 안정적이라면 캐시의 이점을 누릴 수 있습니다. 그러나 Elasticsearch의 데이터가 자주 변경되는 경우 Redis 캐시에 많은 부실 데이터 문제가 발생할 수 있습니다. 이는 원치 않는 문제입니다.

제 생각에는 시간의 1 %를 차지할 수있는 캐시를 튜닝하는 것보다 훨씬 빠른 데이터를 제공하기 위해 ES 쿼리와 매핑을 개선하는 것이 좋습니다.

+0

감사합니다. 내 사고는 redis의 간단한 캐시 구현으로 검색 문자열을 키로 저장하고 응답을 값으로 저장합니다. 따라서 프런트 엔드에서 누군가 검색을 수행하면 먼저 동일한 쿼리가 실행되었는지 확인하기 위해 redis를 누르고, 그렇지 않으면 이전 결과를 반환합니다 (그렇지 않으면 ES를 누르십시오). 나는 그게 얼마나 실용적인지 확신 할 수 없었다. – user1154644

+0

예, 데이터가 변경된 경우 이전 검색에 대한 응답이 변경되어 캐시 된 캐시가 더 이상 정확하지 않을 수 있습니다. 이것이 캐시의 모든 문제입니다. 즉 캐시 된 데이터가 오래되어 손상되지 않았는지 여부를 알 수 있습니다. – Val