
Redis는 직접 설치해서 사용할 수도 있지만, 개발 환경이나 테스트 환경에서는 Docker를 활용해 훨씬 빠르고 간편하게 구축할 수 있다. 특히 Spring Boot 애플리케이션을 개발하면서 캐시, 세션, 인증 토큰 관리 등을 구현해야 한다면 Redis는 거의 필수적인 선택지다. 이 글에서는 Docker를 이용해 Redis 서버를 띄우고, Spring Boot 애플리케이션과 연결하는 전체 과정을 차근차근 정리해본다.
처음 Redis를 접하면 설정이 복잡할 것 같다는 인상을 받기 쉽지만, Docker를 사용하면 운영체제에 직접 설치하지 않아도 서버를 바로 실행할 수 있다. 로컬 개발 환경을 깨끗하게 유지하면서도 실제 서버와 유사한 환경을 구성할 수 있다는 점에서 Docker 기반 Redis 구축은 매우 효율적이다.
Redis Docker 개념 정리
Docker는 애플리케이션을 컨테이너라는 격리된 환경에서 실행할 수 있도록 도와주는 도구다. 컨테이너는 실행에 필요한 모든 환경을 함께 묶어 제공하기 때문에, 개발자마다 다른 환경으로 인한 문제를 줄여준다.
웹 애플리케이션 개발 과정에서는 데이터베이스나 캐시 서버를 자주 띄우게 되는데, Docker를 사용하면 복잡한 설치 과정 없이 명령어 한 줄로 서버를 실행할 수 있다. 이러한 특징 덕분에 로컬 개발 환경이나 테스트 환경 구성에 특히 적합하다.
Redis Docker Image 이해
Docker Image는 애플리케이션을 실행하는 데 필요한 모든 요소를 포함한 읽기 전용 템플릿이다. Redis Docker Image에는 Redis 서버 실행에 필요한 바이너리와 기본 설정이 모두 포함되어 있다.
이미지는 한 번 생성되면 변경할 수 없는 불변 객체이며, 새로운 설정이 필요할 경우 기존 이미지를 기반으로 새로운 이미지를 만들거나 설정을 분리해 관리한다. 이러한 구조 덕분에 서버 환경을 안정적으로 유지할 수 있다.
Redis Docker Container 실행
Docker Image를 실제로 실행한 인스턴스를 Docker Container라고 부른다. Redis 컨테이너는 이미지에 포함된 Redis 서버를 실행하는 실제 프로세스라고 이해하면 된다.
컨테이너는 서로 격리되어 실행되기 때문에, 여러 개의 Redis 서버나 다른 데이터베이스 서버를 동시에 실행하더라도 충돌이 발생하지 않는다. 단, 컨테이너 역시 로컬 자원을 사용하므로 과도한 실행은 주의해야 한다.
Redis Docker 설치 방법
Mac 환경에서는 Homebrew를 이용해 Docker를 간편하게 설치할 수 있다. 공식 사이트에서 Docker Desktop을 다운로드해도 되며, 설치 후 Docker가 정상 실행되는지 확인한다.
$ brew install --cask docker
설치가 완료되면 Docker Desktop을 실행하고, 터미널에서 Docker 명령어가 정상 동작하는지 확인한다.
Redis Docker 이미지 다운로드
Redis 컨테이너를 실행하기 위해 먼저 Redis 이미지를 다운로드한다. 이미지 이름이 정확히 기억나지 않더라도 검색 명령어를 통해 쉽게 찾을 수 있다.
$ docker search redis
$ docker pull redis
다운로드가 완료되면 로컬에 존재하는 이미지 목록을 확인할 수 있다.
$ docker images
Redis Docker 컨테이너 실행
다운로드한 Redis 이미지를 기반으로 컨테이너를 실행한다. 포트 매핑을 통해 호스트와 컨테이너 간 통신이 가능하도록 설정한다.
$ docker run --name my-redis-container -p 6379:6379 redis
컨테이너가 정상적으로 실행되었는지는 다음 명령어로 확인할 수 있다.
$ docker ps -a
Redis Docker CLI 접속
실행 중인 Redis 컨테이너에 접속해 직접 Redis 명령어를 실행할 수 있다. 이를 통해 서버 상태 확인 및 데이터 조작이 가능하다.
$ docker exec -it my-redis-container bash
$ redis-cli
PING 명령어에 PONG이 반환된다면 정상적으로 접속된 것이다.
Redis Key Value 구조 이해
Redis는 기본적으로 Key와 Value를 1:1로 저장하는 구조를 가진다. Key는 고유 식별자이며, 같은 Key를 다시 저장하면 기존 값은 덮어쓰인다.
Value는 문자열뿐만 아니라 리스트, 집합, 해시 등 다양한 자료 구조를 지원한다. 또한 TTL 기능을 통해 데이터에 소멸 시간을 설정할 수 있어 임시 데이터 관리에 매우 유용하다.
Redis Docker CLI 주요 명령어
PING
INFO
SET key value
GET key
DEL key
KEYS *
SETEX key seconds value
TTL key
이러한 명령어를 통해 Redis 서버 상태 확인, 데이터 생성, 조회, 삭제를 손쉽게 수행할 수 있다.
Redis Docker SpringBoot 연동
이제 Redis 서버를 Spring Boot 애플리케이션과 연결해보자. application.yml 파일에 Redis 접속 정보를 설정한다.
spring:
data:
redis:
repositories:
enabled: false
host: 127.0.0.1
port: 6379
Redis 설정 클래스를 통해 RedisConnectionFactory와 RedisTemplate을 등록한다. 이를 통해 애플리케이션 전반에서 Redis를 사용할 수 있다.
Redis Docker 활용 예시
Redis는 JWT 블랙리스트, 이메일 인증 코드 관리, 캐시 처리, 세션 관리 등 다양한 용도로 활용된다. 특히 소멸 시간을 활용한 임시 데이터 관리에 매우 강점이 있다.
Docker를 활용하면 이러한 Redis 환경을 빠르게 구성하고 제거할 수 있어 개발 및 테스트 생산성을 크게 높일 수 있다.
Redis Docker 정리
Docker를 이용한 Redis 구축은 복잡한 설치 과정을 생략하면서도 안정적인 개발 환경을 제공한다. Spring Boot와의 연동 역시 설정만 정확히 해주면 어렵지 않다.
Redis를 처음 접하는 개발자라면 Docker 기반 환경부터 시작해보는 것을 추천한다. 한 번 익혀두면 이후 다양한 프로젝트에서 그대로 활용할 수 있는 강력한 무기가 된다.