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 불가, 복잡한 쿼리 어려움 |
'IT > Database' 카테고리의 다른 글
| [NoSQL] NoSQL이란 무엇인가? 비관계형 데이터베이스 개념 정리 (5) | 2025.07.23 |
|---|---|
| [Oracle] 오라클 테이블 복사, 데이터 복사 (0) | 2023.03.14 |
| [Oracle] sqlDeveloper 대체변수 '&' 입력 (0) | 2018.01.15 |
| [DB] SQL, DDL, DML, DCL 이란, 차이 정리 (0) | 2018.01.09 |
| [DB] JDBC와 DBCP란 무엇이며 왜 사용하는가 (0) | 2017.12.20 |