IT/Database

[Redis] Redis란 무엇인가? 개념과 자료구조, 사용하는 이유

바다, 2025. 7. 24. 09:59
반응형

 

Redis(레디스)

→ 빠른 속도와 유연한 구조로 실무에서 자주 활용되는 인메모리 데이터 저장소이다.
Redis의 개념, 자료구조, 사용하는 이유, 그리고 성능적인 장단점 정리.

 

1. Redis란?

Redis는 Remote Dictionary Server의 줄임말로,
메모리(RAM)에 데이터를 저장하는 Key-Value 기반 오픈소스 데이터베이스이다.

   빠른 읽기/쓰기 성능

   다양한 자료구조 지원

   TTL(만료 시간) 설정 가능

   디스크에 저장 가능한 영속성 옵션 제공

 Redis는 단순한 캐시를 넘어서 다양한 실시간 시스템을 뒷받침하는 핵심 인프라임.

 

 

2. Redis가 지원하는 자료구조

자료형 설명 예시
String 기본적인 key-value 저장 "name" → "홍길동"
Hash Map 구조 (field:value) "user:1" → {name:홍길동, age:30}
List FIFO 또는 스택 LPUSH queue "job1"
Set 중복 없는 집합 SADD users "user1"
Sorted Set (ZSet) 점수 기반 정렬 ZADD rank 100 "userA"
Bitmap, HyperLogLog, Geo 특수 기능용 구조 비트 플래그, 중복 추정, 위치 좌표

다양한 자료구조 덕분에 단순한 캐시 외에도

랭킹 시스템, 대기열, 통계 등 실시간 기능 구현에 매우 유리하다.

 

3. Redis를 사용하는 이유

1. 캐시(Cache)

   자주 조회되는 데이터를 메모리에 저장하여 DB 부하 감소 + 속도 향상

   TTL 설정으로 자동 만료 가능

 

2. 세션 저장소

   로그인 세션 데이터를 Redis에 저장하여 서버 간 공유

   Spring, Django 등에서 쉽게 연동 가능

 

3. 실시간 랭킹/조회수 처리

   ZSet으로 점수 기반 정렬 → 유저 랭킹, 인기 글 순위 등 구현

 

4. 분산 락 (Distributed Lock)

   멀티 서버 환경에서 동시성 문제 해결

   Redisson, Lettuce 등 라이브러리 활용

 

5. 메시지 브로커 (Pub/Sub)

   메시지를 발행하고 구독자에게 전파하는 기능 지원

   → 간단한 이벤트 시스템 구축 가능

   Redis는 발행/구독(Publish/Subscribe) 기능을 제공함.

   

   PUBLISH 명령어로 채널에 메시지를 발행하면,

   해당 채널을. SUBSCRIBE 중인 클라이언트가 실시간으로 메시지를 수신

   실시간 채팅, 알림 시스템, 이벤트 브로드캐스트 등에 활용 가능

 

 

 

4. Redis의 성능/장점/단점

장점

속도: 메모리 기반으로 매우 빠름 (응답시간 수 ms 이하)

단순한 구조: 키-값 기반, 러닝커브 낮음

유연성: 스키마 없이 다양한 데이터 구조 저장 가능

TTL: 만료 시간 지정 가능

확장성: 수평 확장 지원 (Cluster, Sentinel)

단점

메모리 기반 → 데이터가 많으면 RAM 비용 증가

관계형 연산 불가 → JOIN 불가, 복잡한 질의 어려움

영속성은 옵션 → 완전한 DB 대체는 어려움 (기본은 인메모리)

 

마무리 요약

항목 설명
개념 인메모리 기반의 - 데이터 저장소
자료구조 String, Hash, List, Set, ZSet
활용 캐시, 세션, 랭킹, Pub/Sub, 분산락 등
장점 빠름, TTL, 다양한 구조, 확장성
단점 RAM 의존, JOIN 불가, 복잡한 쿼리 어려움
반응형