현재 Spring Boot를 기반으로 웹 애플리케이션을 개발하고 있는 학생으로서, 이번 프로젝트를 진행하면서 Redis를 처음으로 도입하게 되었다. 그간 이름만 익숙했을 뿐, 실제로 사용해 본 경험은 없었기에 Redis가 무엇인지, 왜 필요한지, 그리고 Spring Boot에서는 어떻게 사용하는지 등을 정리해보고자 한다.

1. Redis란 무엇인가?
Redis(REmote DIctionary Server)는 오픈소스 인메모리 데이터 저장소로, 주로 Key-Value 구조의 데이터를 저장하는 데 사용된다. 일반적인 데이터베이스와는 달리 디스크가 아닌 **메모리(RAM)**를 활용하기 때문에, 매우 빠른 속도로 데이터를 읽고 쓸 수 있다는 것이 가장 큰 특징이다.
또한, 단순한 캐시 역할에 그치지 않고 다음과 같은 다양한 기능도 지원한다.
- List, Set, Sorted Set, Hash 등의 자료구조 지원
- 데이터 만료 기능 (TTL: Time-To-Live)
- Pub/Sub 메시징 시스템
- 분산 잠금(Distributed Lock)
- 영속성 옵션 (RDB, AOF)
2. Redis는 왜 사용하는가?
(1) 속도 향상 (캐싱)
Redis의 가장 일반적인 사용 목적은 속도 향상이다. 서버에서 동일한 요청이 반복적으로 들어올 때, 이를 매번 데이터베이스에서 조회하는 것은 비효율적이다. 이때 자주 조회되는 데이터를 Redis에 캐시해두면, 빠른 응답 속도를 보장할 수 있다.
(2) 세션 저장소
HTTP는 본질적으로 상태를 가지지 않기 때문에, 로그인 정보와 같은 사용자 세션은 별도의 저장소에 유지해야 한다. 이때 Redis를 세션 저장소로 활용하면, 분산 서버 환경에서도 세션을 일관되게 유지할 수 있다.
(3) 실시간 처리
Redis는 Pub/Sub, 큐 등 실시간성이 중요한 처리에도 적합하다. 예를 들어, 채팅 서비스의 메시지 전달, 실시간 알림, 이벤트 스트리밍 등에서 활용할 수 있다.
3. Spring Boot에서 Redis는 어떻게 활용되는가?
Spring Boot에서는 다음과 같은 주요 영역에서 Redis를 활용할 수 있다.
- Spring Cache를 이용한 캐싱 처리
- Spring Session을 이용한 세션 클러스터링
- 직접 RedisTemplate이나 StringRedisTemplate을 이용한 데이터 처리
- 실시간 메시징 기능 (예: 채팅 서버)
4. Redis 개발 환경 설정
Spring Boot 프로젝트에서 Redis를 사용하기 위해서는 몇 가지 기본 설정이 필요하다.
(1) Redis 설치 (로컬 테스트용)
로컬에서 Redis를 실행하기 위해 아래와 같은 방법 중 하나를 사용할 수 있다.
Windows (WSL 또는 Redis Windows 포트 사용)
sudo apt update
sudo apt install redis
sudo service redis-server start
Docker 사용 시
docker run --name redis -p 6379:6379 -d redis
(2) Spring Boot 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-cache'
(3) application.yml 설정
spring:
redis:
host: localhost
port: 6379
cache:
type: redis
5. 마무리하며
Redis는 처음 사용해보는 입장에서 그 개념이 다소 어렵게 느껴질 수 있으나, 실제로는 매우 직관적인 구조를 가지고 있다. 특히 속도와 실시간성이 중요한 웹 서비스에서는 Redis의 도입이 큰 도움이 된다. 이번 기회를 통해 캐시, 세션 관리, 실시간 처리 등 다양한 분야에서 Redis를 더 깊이 활용해볼 수 있을 것으로 기대된다. 추후 스프링 로그인 프로젝트에 한번 적용해보도록 하겠다.
'개발 지식' 카테고리의 다른 글
| Docker 기반 CSR 프로젝트, 결국 이렇게 구조 바꿨다 (0) | 2025.05.20 |
|---|---|
| Docker 환경에서 CSR 프로젝트를 배포하면서 겪은 구조적 고민 (0) | 2025.05.03 |
| 서비스로서의 소프트웨어(Software-as-a-Service, SaaS) (0) | 2025.03.26 |
| 소셜 로그인 OAuth 플로우를 이해해보자 (0) | 2025.03.22 |
| python django 프로젝트에서 네이버 로그인 api 활용해 보기 (1) | 2025.01.23 |