Redis
- Remote Dictionary Server의 약자
- 대표적인 No-SQL 데이터베이스
- 다양한 형태의 자료구조를 Key-Value의 구조로 메모리에 저장할 수 있는 In-memory DB이다.
- 메인 DB의 캐싱 서버로써 많이 사용된다.
- Pub/Sub 기능을 제공해서 Realtime 서비스를 구현할 수 있다.
- Realtime 서비스 : 실시간으로 데이터를 처리하거나 응답하는 서비스
Redis 작동 방식

- Request에서 요청한 데이터가 캐시 서버(Redis)에 존재하는지 먼저 체크하고 있으면 바로 반환한다.
- 존재하지 않는다면 RDS에서 데이터를 꺼내서 전달한다.
Redis에서 저장 가능한 데이터 구조
- Strings : 가장 기본적인 데이터 구조로, 단일 문자열뿐만 아니라 숫자, 바이너리 값 등도 저장할 수 있다.
- 하나의 Key값에는 512MB까지 데이터를 저장할 수 있다.
- Lists : String 값을 LinkedList 구조로 저장하며, 주로 Queue나 Stack의 형태로 많이 사용된다.
- 데이터를 앞이나 뒤에서 삽입/삭제할 수 있어, 실시간 로그 처리나 메시지 큐 시스템 구현에 적합하다.
- Sets : 중복을 허용하지 않는 집합(Set) 형태의 데이터 구조
- 특정 유저의 권한, 태그, 고유한 식별자 등 중복을 배제한 고유한 값을 저장하고자 할 때 유용하게 사용된다.
- Sorted Sets : Set의 고유성을 유지하면서 각 원소에 Score(정렬 기준 숫자 값)를 부여하여 자동 정렬하는 구조
- 랭킹 시스템, 리더보드, 점수 기반 정렬 등에 활용되며, 삽입과 조회 시 성능이 뛰어나다.
- Streams : 로그형 데이터를 처리하기 위한 구조로, 실시간 데이터 흐름을 저장하고 처리하는데 적합하다.
- 각 Stream 항목(entry)에 시간을 기반의 고유 ID를 가지며, ID 기반 조회 시 O(1)의 높은 성능을 기대할 수 있다.
- 실시간 이벤트 처리, 모니터링 시스템 등에 널리 활용된다.
- Geospatial indexes : 위도, 경도 값을 저장하고 처리할 수 있는 자료구조
- 특정 위치를 중심으로 반경 내 데이터를 빠르게 검색할 수 있다.
- 실시간 위치 기반 서비스(ex. 주변 가게 검색, 사용자 위치 추적)에 매우 적합하다.