Redis
데이터를 디스크가 아닌 메모리(RAM)에 저장하는 데이터 스토어입니다. 메모리에 저장하기 때문에 읽기/쓰기 속도가 매우 빠릅니다.
어디에 쓰이나요?
- 캐시: 자주 조회하는 데이터를 메모리에 저장하여 응답 속도 향상
- 세션 저장소: 로그인 상태, 사용자 세션 정보를 저장
- 메시지 큐: 서비스 간 비동기 메시지 전달 (작업 대기열)
- 실시간 데이터: 실시간 랭킹, 카운터, 속도 제한(Rate Limiting) 등
PostgreSQL 같은 디스크 기반 DB와 함께 사용되는 경우가 많습니다. 예를 들어, 자주 바뀌지 않는 데이터는 PostgreSQL에 저장하고 자주 조회하는 데이터는 Redis에 캐싱하여 성능을 높이는 방식입니다.
Docker Compose
services:
redis:
image: redis:7-alpine
container_name: redis
restart: unless-stopped
ports:
- "6379:6379"
command: redis-server --requirepass changeme
volumes:
- redis_data:/data
volumes:
redis_data:
접속 확인
docker exec -it redis redis-cli -a changeme
접속 후 동작을 확인합니다.
127.0.0.1:6379> ping
PONG
기본 정보
| 항목 | 값 |
|---|
| 포트 | 6379 |
| 비밀번호 | changeme |
| 데이터 저장 경로 | redis_data 볼륨 |
주요 설정 옵션
command 항목에 Redis 서버 옵션을 추가할 수 있습니다.
command: redis-server --requirepass changeme --maxmemory 256mb --maxmemory-policy allkeys-lru
| 옵션 | 설명 |
|---|
--requirepass | 접속 비밀번호 |
--maxmemory | 최대 메모리 사용량 |
--maxmemory-policy | 메모리 초과 시 정책 (allkeys-lru, volatile-lru 등) |
--appendonly yes | AOF 영속성 활성화 |
라이선스
| 구분 | 내용 |
|---|
| 라이선스 | RSALv2 / SSPL 듀얼 (Redis 7.4+), BSD 3-Clause (7.2 이하) |
| 개인 사용 | 자유롭게 사용 가능 |
| 상업적 사용 | 사내 사용은 자유, Redis를 관리형 서비스(DBaaS)로 제공하는 것은 불가 |
Redis 7.4부터 라이선스가 변경되었습니다. 사내 캐시, 세션 저장소 등 내부 용도로 사용하는 것은 제한이 없습니다. 제한되는 것은 Redis 자체를 상품화하여 클라우드 서비스로 판매하는 경우입니다.