서비스를 만들다 보면 DB 조회가 느려지거나, 로그인 세션을 여러 서버에서 공유해야 하거나, 같은 작업을 반복 호출하는 트래픽이 몰리는 순간이 옵니다. 이때 가장 현실적인 해결책으로 자주 선택되는 게 Redis입니다. Redis는 “데이터를 메모리에 올려두고 아주 빠르게 읽고 쓰는 저장소”로, 운영에서 캐시와 세션, 분산락 같은 문제를 해결할 때 거의 표준처럼 쓰입니다.
빠른 체크포인트
- Redis는 인메모리 기반 키-값 저장소로, 읽기/쓰기 속도가 매우 빠릅니다.
- 캐시 서버로 가장 많이 쓰이며 DB 부하를 크게 줄입니다.
- 로그인 세션 저장소로 쓰면 서버가 여러 대여도 세션을 공유할 수 있습니다.
- 레이트리밋, 분산락, 작업 큐 같은 운영 기능에도 자주 사용됩니다.
- 영구 저장도 가능하지만 기본 성격은 “빠른 임시 저장 + 운영 기능”에 가깝습니다.
1. Redis의 정의: “메모리에 올려두는 초고속 저장소”
Redis는 Remote Dictionary Server의 약자이며, 네트워크로 접근하는 “메모리 기반 데이터 저장소”입니다. 일반적인 RDB(MySQL/PostgreSQL)가 디스크 기반으로 안정성과 정합성을 중심으로 한다면, Redis는 메모리를 활용해 속도와 응답성을 극대화한 쪽에 가깝습니다. 그래서 Redis는 DB를 대체한다기보다, DB 앞에 두고 성능을 끌어올리거나 분산 환경에서 공통 상태를 관리하는 용도로 많이 씁니다.
2. Redis가 필요한 이유
서비스가 커질수록 요청의 대부분은 “자주 조회되는 데이터”에 몰리는 경향이 있습니다. 예를 들어 인기 글 목록, 상품 상세, 네이버 플레이스 순위 데이터, 추천 결과 같은 값은 많은 사람이 반복해서 같은 걸 조회합니다. 이걸 매번 DB에서 계산하고 조회하면 DB 부하가 쌓이고 응답이 느려집니다. Redis에 결과를 짧게라도 저장해두면 다음 요청은 Redis에서 바로 반환되어 평균 응답 시간이 크게 줄어듭니다.
3. Redis의 대표 사용 사례 6가지
3-1) 캐시(Cache)
가장 대표적인 사용입니다. “DB 조회 결과”나 “API 결과”를 Redis에 저장하고 일정 시간(TTL)이 지나면 자동으로 만료시키는 방식으로 쓰입니다. 캐시가 있으면 DB가 매번 같은 일을 하지 않아도 됩니다.
3-2) 세션(Session) 저장소
서버가 여러 대(스케일아웃)로 늘어나면, 특정 서버 메모리에 저장한 세션은 다른 서버에서 못 봅니다. Redis에 세션을 저장하면 어느 서버로 요청이 가도 같은 세션을 확인할 수 있어서 로그인 유지가 안정적입니다.
3-3) 레이트리밋(Rate Limit)
특정 IP나 사용자에게 “분당 요청 수 제한”을 걸고 싶을 때 Redis의 카운터와 TTL이 잘 맞습니다. 예를 들어 1분 TTL로 카운터를 올리면서 제한을 걸면 간단하게 구현됩니다.
3-4) 작업 큐/메시징(Queue)
비동기 작업을 처리할 때 Redis List/Stream 등을 활용해 큐처럼 사용할 수 있습니다. 다만 복잡한 메시징이나 내구성이 필요하면 Kafka/RabbitMQ로 넘어가는 경우가 많고, Redis는 상대적으로 가볍게 쓰는 편입니다.
3-5) 분산락(Distributed Lock)
여러 서버가 동시에 같은 작업을 실행하면 안 되는 상황이 있습니다. 예를 들어 같은 결제 처리, 같은 정산 작업, 같은 배치 실행 등을 한 번만 실행해야 할 때 분산락이 필요합니다. Redis는 이 용도로도 많이 쓰입니다.
3-6) 실시간 랭킹/카운팅
Redis의 Sorted Set 같은 자료구조를 쓰면 랭킹 구현이 깔끔해집니다. 예를 들어 “조회수 TOP 10”, “키워드 검색량 순위” 같은 걸 빠르게 만들 수 있습니다.
4. Redis가 “DB”인지 “캐시”인지 헷갈릴 때
Redis는 저장소이긴 하지만, 많은 팀에서 Redis는 DB라기보다 “캐시/상태 관리 레이어”로 사용합니다. 이유는 메모리 기반이라 비용과 용량 측면에서 제한이 있고, 운영 관점에서 중요한 원본 데이터는 일반적으로 RDB에 두는 게 안정적이기 때문입니다. Redis는 원본을 대신하기보다 “자주 쓰는 데이터”와 “분산 환경에서 공유해야 하는 상태”를 빠르게 처리하기 위한 도구라고 이해하는 게 가장 실용적입니다.
5. Redis에서 자주 나오는 키워드 4개
- TTL(Time To Live): 키에 만료 시간을 걸어 자동 삭제되게 하는 기능입니다.
- Cache Hit/Miss: 캐시에 값이 있어서 바로 응답하면 Hit, 없어서 원본에서 가져오면 Miss입니다.
- Eviction: 메모리가 부족할 때 어떤 키를 지울지에 대한 정책입니다.
- Persistence: 재시작 후에도 데이터를 복구할지(RDB/AOF 저장)를 설정하는 옵션입니다.
6. 정리
Redis는 “메모리에 저장해서 빠르게 꺼내 쓰는 저장소”입니다. 캐시로 DB 부하를 줄이고, 세션 저장소로 스케일아웃 환경을 안정화하고, 레이트리밋·분산락·랭킹 같은 운영 기능을 구현할 때 실무에서 매우 자주 등장합니다. Redis를 잘 쓰면 서비스 응답 속도와 안정성이 한 단계 올라가고, DB와 서버를 무작정 늘리기 전에 현실적인 성능 개선을 할 수 있습니다.