사용자가 브라우저에 검색어를 입력하면 백엔드 API로 요청이 들어가며 백엔드 서버에서는 검색어에 대한 결과를 데이터베이스에서 찾아 그 결과를 사용자에게 보여준다.
검색어에 대한 결과를 MySQL과 같은 데이터베이스에서 찾게되면 매우 오래걸린다. 그러면 어떻게 빠른검색을 구현할 수 있을까???
Redis는 Memcached와 비슷한 캐시 시스템으로서 동일한 기능을 제공하며 영속성, 다양한 데이터 구조와 같은 부가적인 기능을 지원한다.
Redis는 모든 데이터를 메모리에 저장하고 조회한다.
Redis는 Key,Value 형태로 데이터를 저장한다.
위의 이미지와 같이 다양한 자료구조를 지원하여 개발의 편의성이 좋아지고 난이도가 낮아진다는 장점이 있다.
그래서 메모리에 저장하는 데이터베이스인 Redis를 이용하고 Redis에서 제공하는 Sorted-Set(유일한 값들의 모임인 자료구조 이지만 순서는 관리해주지 않는 Set자료구조에서 순서 관리 특성을 더한 것)이라는 자료구조를 사용하면 빠르고 간단하게 데이터를 정렬할 수 있다.
그래서 위의 이미지에서 Redis에 검색결과가 저장되어 있다면 빠르게 가져올 수 있으며 없다면 MySQL 또는 Elasticsearch로 간다.
Logstash : 다양한 소스(DB, csv파일 등)의 로그 또는 트랜잭션 데이터를 수집, 집계, 파싱하여 엘라스틱서치로 전달한다.
Kibana : 엘라스틱서치의 빠른 검색을 통해 데이터를 시각화 및 모니터링 한다.
참고한 사이트 : https://victorydntmd.tistory.com/308