Redis 란?
Redis는 메모리에 데이터를 저장하는 저장소이다.
일반 DB(MySQL 등)는 데이터를 디스크에 저장한다. 디스크는 데이터를 읽을 때 물리적인 탐색 과정이 필요해서 시간이 걸린다.
Redis는 데이터를 메모리(RAM)에 저장하기 때문에 디스크 탐색 없이 바로 읽어올 수 있어서 속도가 훨씬 빠르다.
MySQL → 디스크 저장 → 조회 시 디스크 I/O 발생 → 상대적으로 느림
Redis → 메모리 저장 → 바로 읽어옴 → 매우 빠름
물론 단점도 있다.
메모리는 서버가 꺼지면 데이터가 날아간다. 그래서 Redis는 영구 저장이 필요한 데이터가 아니라 임시로 빠르게 접근해야 하는 데이터에 사용한다.
꼭 써야하나?
지금 구현하고 있는 myshop 프로젝트를 생각해보자. 상품 목록 조회 API를 호출할 때마다 매번 DB에 쿼리를 날리게 된다.
사용자가 100명이면 100번, 1000명이면 1000번 쿼리가 실행된다.
즉, 사용자가 늘어나면 늘어날수록 쿼리 실행 횟수가 증가하게 된다.
그러나 상품 목록은 새 상품이 등록되기 전까지는 데이터가 바뀌지 않는다. 그래서 매번 쿼리를 실행하는 것은 매우 비효율적이다.
그래서 Redis가 사용되는데, 첫 번쨰 요청 때만 DB에서 조회하고 그 결과를 Redis에 저장해둔다.
그럼 이후에 같은 요청이 왔을 때는 DB 대신 Redis에서 바로 반환할 수 있게 된다.
첫 번째 요청 → DB 조회 → 결과를 Redis에 저장
두 번째 요청 → Redis에서 바로 반환 (DB 조회 없음)
새 상품 등록 → Redis 캐시 삭제
다음 요청 → 다시 DB 조회 → Redis에 저장
이것이 캐싱이고, DB 부하를 줄이고 응답 속도를 높이는 방법 중 하나이다.
구현
Docker로 Redis 띄우기
docker run -d \
--name redis-local \
-p 6379:6379 \
redis:7
터미널에 위 명령어를 입력하면 redis-local 컨테이너가 실행된다.
의존성 및 설정 추가
build.gradle 에 Redis 의존성을 추가하자.
// Redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
application.yml 에 Redis 연결 정보를 추가하자.
spring:
data:
redis:
host: localhost
port: 6379
실행 및 확인
GitHub - SeongmoAhn/myshop-project at 260331-redis
Contribute to SeongmoAhn/myshop-project development by creating an account on GitHub.
github.com
'Backend > Spring' 카테고리의 다른 글
| [Backend/Spring] Spring Boot - 테스트 코드(JUnit5 / Mockito) (0) | 2026.03.31 |
|---|---|
| [Backend/Spring] Spring Boot - Spring Security + JWT (0) | 2026.03.31 |
| [Backend/Spring] Spring Boot - 예외 처리 (0) | 2026.03.29 |
| [Backend/Spring] Spring Boot - @OneToMany 와 N+1 문제 (0) | 2026.03.29 |
| [Backend/Spring] Spring Boot - JPA 연관관계 (0) | 2026.03.29 |