대표적인 NoSQL DB인 Redis(레디스)는 Remote Dictionary Server의 약자로, 오픈 소스 인메모리 키-값 저장소(key-value store)입니다. 주로 캐싱, 세션 저장, 메시지 브로커, 실시간 데이터 처리 등에 사용됩니다.
🔹 Redis의 특징
- 인메모리 데이터베이스
- 데이터를 디스크가 아닌 메모리(RAM)에 저장하여 빠른 읽기/쓰기 성능을 제공
- NoSQL 데이터베이스로 동작하며, 관계형 데이터베이스(RDBMS)보다 빠름
- 다양한 데이터 구조 지원
- 문자열(String), 리스트(List), 해시(Hash), 셋(Set), 정렬된 셋(Sorted Set) 등 여러 자료구조 제공
- 퍼시스턴스(영속성) 지원
- AOF(Append-Only File): 모든 변경 사항을 로그에 기록
- RDB(Redis Database File): 특정 시점의 스냅샷을 저장
- 클러스터링 및 복제 기능
- Master-Slave 복제를 통해 데이터 백업 가능
- Redis Cluster를 이용한 분산 처리
- 메시지 브로커 기능
- Pub/Sub(발행-구독) 시스템을 지원하여 실시간 메시지 처리 가능
- 트랜잭션 및 Lua 스크립트 지원
MULTI
,EXEC
,WATCH
명령어를 이용한 트랜잭션 제공- Lua 스크립트를 이용해 복잡한 연산을 한 번에 실행 가능
🔹 Redis 사용 사례
✅ 웹 애플리케이션 캐싱
✅ 세션 저장소 (ex: 로그인 세션 관리)
✅ 순위표 및 랭킹 시스템 (ex: 게임 리더보드)
✅ 실시간 데이터 스트리밍 (ex: 채팅, 알림 시스템)
✅ 메시지 큐 및 Pub/Sub 시스템 (ex: 마이크로서비스 간 통신)
🔹 Redis vs. Memcached
항목 | Redis | Memcached |
---|---|---|
데이터 구조 | 다양한 자료구조 지원 (String, List, Hash, Set, Sorted Set) | 단순 Key-Value (String) |
데이터 영속성 | 지원 (AOF, RDB) | 미지원 |
복제 및 클러스터링 | 지원 | 미지원 |
트랜잭션 | 지원 | 미지원 |
속도 | 빠름 | 더 빠름 (하지만 기능이 제한적) |
🔹 Redis 설치 및 기본 사용법 (Linux 기준)
1️⃣ Redis 설치
sudo apt update
sudo apt install redis-server
2️⃣ Redis 실행
redis-server
3️⃣ Redis 클라이언트 접속
redis-cli
4️⃣ 기본 명령어
SET key1 "Hello Redis" # 데이터 저장
GET key1 # 데이터 조회
DEL key1 # 데이터 삭제
EXPIRE key1 10 # 10초 후 데이터 자동 삭제
INCR counter # 숫자 증가
LPUSH mylist "A" "B" # 리스트에 값 추가
LRANGE mylist 0 -1 # 리스트 값 조회
🔹 결론
Redis는 빠른 속도, 다양한 데이터 구조, 영속성 지원, 메시지 브로커 기능 등을 제공하여 웹 서비스, 캐싱, 실시간 데이터 처리에 널리 사용됩니다.
사용 목적에 따라 캐시, 데이터 저장소, 메시지 큐 등으로 활용할 수 있습니다. 🚀
추가정보
Redis는 RAM에 저장하는데, 껐다 켜면 데이터가 사라질까?
기본적으로 Redis는 데이터를 RAM(메모리)에 저장하므로, 서버를 껐다 켜면 데이터가 사라질 수 있습니다. 하지만 Redis는 데이터를 유지하기 위한 영속성(Persistence) 기능을 제공하여, 껐다 켜도 데이터를 복구할 수 있습니다.
🔹 Redis의 데이터 영속성 방법
1️⃣ RDB (Redis Database File) – 스냅샷 저장
- 특정 시간 간격마다 메모리 데이터를 디스크에 저장
.rdb
파일을 만들어서 저장 (기본 경로:/var/lib/redis/dump.rdb
)- 빠르지만 일부 데이터 손실 가능 (최근 변경된 데이터는 저장되지 않을 수도 있음)
2️⃣ AOF (Append-Only File) – 변경 로그 저장
- 모든 쓰기 연산을 로그 파일에 기록
- Redis가 다시 시작될 때 AOF 로그를 차례대로 실행하여 데이터를 복구
- RDB보다 데이터 손실 위험이 적지만, 로그 파일이 커질 수 있음
3️⃣ RDB + AOF 동시 사용
- RDB는 빠른 백업, AOF는 데이터 보존력 강화
- 대부분의 경우 AOF를 활성화하고 RDB를 보조적으로 사용
🔹 Redis 영속성 설정 방법
1️⃣ RDB 설정
Redis 설정 파일(redis.conf
)에서 다음 옵션을 조정하면 RDB 스냅샷 저장 주기를 변경할 수 있음.
save 900 1 # 900초(15분) 동안 1번이라도 변경되면 저장
save 300 10 # 300초(5분) 동안 10번 변경되면 저장
save 60 1000 # 60초(1분) 동안 1000번 변경되면 저장
기본적으로 활성화됨
SAVE
명령어를 사용하여 즉시 저장 가능 (SAVE
는 동기식,BGSAVE
는 비동기식)
2️⃣ AOF 설정
AOF를 활성화하려면 redis.conf
에서 다음 설정을 변경
appendonly yes # AOF 활성화
appendfilename "appendonly.aof" # AOF 파일명 설정
AOF 모드는 성능과 안정성을 조절할 수 있음:
appendfsync always # 매번 쓰기(느리지만 안전)
appendfsync everysec # 1초마다 쓰기(기본값, 균형 잡힌 선택)
appendfsync no # OS가 알아서 처리(빠르지만 데이터 손실 가능)
3️⃣ 현재 설정 확인
Redis CLI에서 설정 확인 가능
CONFIG GET save
CONFIG GET appendonly
🔹 결론
💡 Redis는 기본적으로 데이터를 RAM에 저장하므로 전원을 끄면 데이터가 사라질 수 있지만, RDB 또는 AOF 기능을 사용하면 데이터를 유지할 수 있습니다.
✅ RDB는 주기적으로 저장하며 빠름, AOF는 모든 변경 사항을 기록하여 데이터 유실을 최소화함
✅ 둘 다 활성화하면 속도와 안정성을 모두 확보 가능! 🚀