[Redis] Redis 기본 개념 및 특징
Redis란?
Redis는 Remote Dictionary Server의 약자로, 메모리 기반의 Key-Value 저장소이다.
비관계형 데이터베이스(NoSQL)이며, 메모리를 사용하기 때문에 RDBMS보다 속도가 매우 빠르다.
Redis의 특징
1. Key-Value 기반
- 모든 데이터는
Key-Value쌍으로 저장된다.
2. 시간복잡도 O(1)
Key-Value이기 때문에 연산(조회, 삽입, 삭제)의 시간복잡도가O(1)으로 매우 빠르다.
3. 메모리 기반
- 데이터를 디스크가 아닌 메모리에 저장하기 때문에
RDBMS보다 수만~수십만 배 빠르다. - 메모리를 사용하기 때문에 서버가 꺼지면 데이터가 휘발된다.
- 데이터 영속성(
Persistence)을 위해RDB(Snapshot)와AOF(Append Only File)방식을 지원한다. - 하지만, 해당 기능은 서비스 장애의 주된 원인이 될 수 있기 때문에 운영 환경에선 사용을 지양한다고 한다.
- 데이터 영속성(
4. 싱글 스레드
- 싱글 스레드로 동작하기 때문에 한 번에 하나의 작업만 처리할 수 있다.
- 원자성이 보장되어,
Race Condition이 발생하지 않는다. - 때문에 멀티 스레드 환경에서 발생할 수 있는 교착상태(
Dead Lock)가 발생하지 않는다.
5. 분산 락
- 싱글 스레드이기 때문에 분산락(
Distributed Lock) 구현이 쉽다. - Spring boot 환경에서는
Redisson라이브러리를 사용하여 쉽게 구현할 수 있다.
6. 세션 관리
- TTL(만료시간)을 지원하기 때문에 세션 관리에 적합하다.
- 예) 로그인 세션, 인증 토큰
7. 캐싱
- 자주 조회되는 데이터를 캐싱해서 DB 부하를 줄이고 읽기 속도를 높일 수 있다.
- 대표적인 패턴으로는
Cache-Aside,Write-Through등이 있다.
8. 실시간 분석
- 실시간 집계, 카운팅, 순위 집계(랭킹) 등에 활용할 수 있다.
- 예) 게임 실시간 랭킹, 실시간 접속자 수
9. 다양한 데이터 구조
- String: 가장 기본적인 데이터 타입으로, 단순한 문자열이나 숫자를 저장할 수 있다.
- List: 순서가 있는 값의 집합으로, 중복을 허용한다.
- Set: 순서가 없는 값의 집합으로, 중복을 허용하지 않는다.
- Sorted Set: 순서가 있는 값의 집합으로, 중복을 허용하지 않으며, 각 값은 점수(score)를 가진다.
- Hash: 필드와 값의 쌍으로 이루어진 데이터 구조로, 객체를 표현하는 데 적합하다.
11. Pub/Sub
- Redis는 메세지 브로커로도 활용된다.
- 채널 기반으로
Publisher/Subscriber를 지원하여 알림이나 채팅 시스템에 활용될 수 있다.