[Backend/Spring] Spring Boot - Redis 연동과 캐싱

2026. 3. 31. 21:50·Backend/Spring

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
'Backend/Spring' 카테고리의 다른 글
  • [Backend/Spring] Spring Boot - 테스트 코드(JUnit5 / Mockito)
  • [Backend/Spring] Spring Boot - Spring Security + JWT
  • [Backend/Spring] Spring Boot - 예외 처리
  • [Backend/Spring] Spring Boot - @OneToMany 와 N+1 문제
Study with Me!
Study with Me!
Study with Me!
  • Study with Me!
    Seongmo
    Study with Me!
  • 전체
    오늘
    어제
    • Computer (147) N
      • Computer Science (61)
        • Data Structure (51)
        • Algorithm (6)
        • 선형대수 with C++ (4)
      • Backend (11) N
        • 백엔드 취업을 위해.. (1)
        • Spring (10) N
        • Database (0)
        • Testing (0)
        • Infra & DevOps (0)
      • Arm Architecture (1)
        • Register (0)
        • Assembly Instruction (1)
      • Linux (32)
        • Linux Kernel (4)
        • 라이브러리 함수 구현하기 (0)
        • 쉘, 쉘 명령어 구현하기 (15)
        • Ubuntu (13)
      • Cloud Infrastructure (8)
        • Kubernetes (7)
        • OpenStack Magnum (1)
      • AWS (3)
      • Baekjoon (18)
      • Tools (6)
        • Git & Github (5)
        • Vim (1)
      • 개발 환경 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    STL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Study with Me!
[Backend/Spring] Spring Boot - Redis 연동과 캐싱
상단으로

티스토리툴바