Redis의 기본 개념, 특징, 설치 방법을 알아봅니다.
Redis란?
Redis(Remote Dictionary Server)는 오픈소스 인메모리 데이터 구조 스토어입니다.
키-값(Key-Value) 기반이지만, 다양한 데이터 구조를 지원하여 캐시, 메시지 브로커, 세션 스토어 등 폭넓게 활용됩니다.
RDBMS vs Redis 비교
| 항목 |
RDBMS (MySQL 등) |
Redis |
| 저장 방식 |
디스크 기반 |
인메모리 (RAM) |
| 데이터 모델 |
테이블/행/열 (관계형) |
Key-Value (다양한 자료구조) |
| 스키마 |
고정 스키마 필수 |
스키마 없음 (Schemaless) |
| 쿼리 언어 |
SQL |
Redis 명령어 |
| 트랜잭션 |
ACID 완전 지원 |
제한적 (MULTI/EXEC) |
| 속도 |
ms 단위 |
μs 단위 (10~100배 빠름) |
| 데이터 크기 |
디스크 용량만큼 |
RAM 용량에 제한 |
| 영속성 |
기본 영속 |
선택적 (RDB/AOF) |
| 용도 |
영구 데이터 저장 |
캐시, 세션, 실시간 처리 |
Redis 주요 특징
| 특징 |
설명 |
| 인메모리 |
모든 데이터를 RAM에 저장, 초고속 읽기/쓰기 |
| 다양한 자료구조 |
String, List, Set, Hash, Sorted Set, Stream 등 |
| 영속성 옵션 |
RDB 스냅샷, AOF 로그로 디스크 저장 가능 |
| 복제 |
Master-Replica 구조 지원 |
| 클러스터 |
Redis Cluster로 수평 확장 |
| Pub/Sub |
메시지 발행/구독 |
| TTL |
키별 만료 시간 설정 |
| 싱글 스레드 |
단일 스레드로 원자적 명령 실행 (락 불필요) |
| Lua 스크립팅 |
서버 측 스크립트 실행 |
Redis 활용 사례
| 용도 |
설명 |
| 캐시 |
DB 쿼리 결과, API 응답 캐싱 |
| 세션 스토어 |
웹 애플리케이션 세션 관리 |
| 실시간 랭킹 |
Sorted Set으로 리더보드 구현 |
| 메시지 큐 |
List/Stream으로 작업 큐 구현 |
| Rate Limiting |
API 호출 횟수 제한 |
| 분산 락 |
분산 환경에서의 동기화 |
| 실시간 분석 |
HyperLogLog로 고유 방문자 수 집계 |
| Pub/Sub |
실시간 알림, 채팅 |
설치
Windows
Windows에서는 공식 지원이 제한적이므로 WSL2 또는 Docker를 권장합니다.
Docker (권장)
docker run -d --name redis -p 6379:6379 redis:7-alpine
# 비밀번호 설정
docker run -d --name redis -p 6379:6379 redis:7-alpine --requirepass "RedisPass123!"
# 접속
docker exec -it redis redis-cli
WSL2 (Ubuntu)
sudo apt update
sudo apt install redis-server
sudo systemctl start redis-server
Mac
brew install redis
brew services start redis
Linux (Ubuntu/Debian)
sudo apt update
sudo apt install redis-server
sudo systemctl start redis-server
sudo systemctl enable redis-server
설치 확인
redis-cli ping
# 응답: PONG
접속 방법
redis-cli
# 로컬 접속
redis-cli
# 원격 접속
redis-cli -h 192.168.1.100 -p 6379
# 비밀번호 인증
redis-cli -h localhost -p 6379 -a "RedisPass123!"
# 접속 후 인증
redis-cli
AUTH RedisPass123!
# 특정 DB 선택 (기본 0~15번)
redis-cli -n 1
SELECT 1
기본 명령어
PING # PONG (연결 확인)
INFO # 서버 정보
INFO memory # 메모리 정보
INFO clients # 클라이언트 정보
DBSIZE # 현재 DB의 키 개수
FLUSHDB # 현재 DB 전체 삭제
FLUSHALL # 모든 DB 전체 삭제
CONFIG GET maxmemory # 설정 조회
CONFIG SET maxmemory 2gb # 설정 변경
SHUTDOWN # 서버 종료
GUI 도구
| 도구 |
특징 |
가격 |
| Redis Insight |
Redis 공식 도구, 시각화 우수 |
무료 |
| Another Redis Desktop Manager |
가볍고 빠름, 크로스 플랫폼 |
무료 |
| Medis |
Mac 전용, 깔끔한 UI |
유료 |
| RedisCommander |
웹 기반 |
무료 |
Redis 아키텍처 기본 개념
| 용어 |
설명 |
| Database |
번호로 구분되는 논리적 공간 (기본 0~15) |
| Key |
데이터를 식별하는 문자열 (바이너리 안전) |
| Value |
Key에 연결된 데이터 (다양한 자료구조) |
| TTL |
Time To Live, 키 만료 시간 |
| RDB |
특정 시점의 메모리 스냅샷 (파일: dump.rdb) |
| AOF |
Append Only File, 모든 쓰기 명령 로그 |
| Sentinel |
고가용성 모니터링/자동 페일오버 |
| Cluster |
데이터 샤딩을 통한 수평 확장 |
관련된 글 (redis > lecture-redis)