Redis란?? 그게 뭔데
Redis란???
프로젝트를 진행하다 보면 Redis 관한 내용을 많이 접하게 된다..
그래서 해당 포스트에선 Redis가 무엇이고 어디다 왜 쓰는지 알아보겠슴다
Redis는 오픈 소스로, 데이터베이스로 사용되는 인 메모리 키 벨류 스토어이다.
Redis는 다양한 인메모리 데이터 구조를 제공해 다양한 사용자 정의 애플리케이션을 생성할 수 있다.
주로 사용하는 사례로는 캐싱, 세션 관리,순위표 등등이 있다.
현재 가장 인기 있는 키 벨류 스토어이다.
뭐가 좋은데??
빠른 성능
데이터를 디스크, SSD에 저장하는 다른 DB 들과 달리 모든 데이터는 주 메모리에 저장된다.
디스크에 엑세스를 하지 않아 검색 시간으로 인한 지연을 없애고 간단한 알고리즘으로 성능을 높였다.
인 메모리 데이터 구조
Redis는 다양한 데이터에 매핑되는 키를 저장할 수 있다.
주로 사용하는 것은 string
이며
Lists, Set, Sorted Set, Hashes, 등등 을 지원한다.
거의 모든 데이터가 저장될 수 있다.
다양성, 사용 편의성
Redis는 여러 도구들을 제공한다.
Pub/Sub으로 메세지를 채널에 게시, 사용자에게 전달을 해준다.
- 채팅과 메세징 시스템에서 사용할 수 있다.
TTL키로 데이터가 살아있는 기간을 설정할 수 있다.
- DB에 불필요한 데이터가 남아있지 않게 한다.
이는 주로 캐싱에 사용된다.
복제 및 지속성
Redis는 마스터-슬레이브 아키텍처를 사용해 비동기식 복제를 지원한다.
데이터가 여러 슬레이브 서버에 복제될 수 있다.
이 경우 여러 서버로 분산해 성능 향상, 복구가 가능해진다.
또한 스냅샷
을 지원해 장애시 빠르게 복구가 가능하다.
그래서 어디서 쓰는데
캐싱
다른 DB 앞에 배치해 성능이 뛰어난 인 메모리 캐시를 생성한다.
이로 인해 메인 DB에 엑세스 하는 경우를 줄이고 빠른 응답, 처리량을 늘려 메인 DB의 부담을 줄여준다.
세션 관리
세션 관리할 때 거의 대부분 Redis를 선택한다.
Redis는 세션 관리에 매우 적합한 형태를 가진다.
세션 키에 대한 적절한 TTL로 빠른 키 값 스토어로 사용하면 간단하게 세션 정보를 관리할 수 있다.
많은 온라인 애플리케이션에서 사용하고 있다.
실시간 순위표
Redis Sorted Set 구조를 이용해서
요소가 목록에 유지되고 점수에 따라 정렬되는 기능을 구현할 수 있다.
이를 이용해 동적 순위를 생성하여 보여주는 등의 작업을 가능케 한다.
예를 들어 좋아요 많이 받은 사람을 보여주거나 대회에서 변동되는 순위를 표시할때 사용한다.
속도 제한
이벤트 속도를 측정하고 필요한 경우 제한할 수 있다.
Redis 카운터를 사용하여 특정 기간 동안 액세스 요청의 수를 세고 한도가 초과되는 경우 조치를 취할 수 있다.
대기열
List 데이터 구조를 사용하면 간단한 영구 대기열을 손쉽게 구현할 수 있다.
채팅 및 메시징
Redis에서는 패턴 매칭과 더불어 PUB/SUB 표준을 지원한다.
이를 이용해 고성능 채팅방, 실시간 코멘트 스트림 및 서버 상호 통신을 지원할 수 있다.
다음 포스트에서 redis의 함수들과 캐싱전략 등에 대해서 작성해보겠슴다