JSCODE Logo
JSCODE 박재성JSCODE 제이온JSCODE 시니
과외유튜브블로그후기
완강 후기 이벤트블로그 리뷰 이벤트AWS SAA 합격 후기 이벤트
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2026 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침

비전공자도 이해할 수 있는 Redis 입문/실전

Redis 기본 개념

Redis란? / Redis의 장점
Redis 주요 사용 사례
백엔드 채용 공고에 종종 등장하는 ‘대용량 트래픽 처리 경험’, ‘Redis 사용 경험’

Redis 사용법 익히기

로컬(Windows, MacOS)에서 Redis 설치하기
Redis 기본 명령어 익히기
Redis에서 Key 네이밍 컨벤션 익히기

Redis 캐싱 전략

캐시(Cache), 캐싱(Caching)이란?
데이터를 캐싱할 때 사용하는 전략 (Cache Aside, Write Around)
Cache Aside, Write Around 전략의 한계점 / 해결 방법
캐싱으로 조회 성능 개선을 하기 전 OOO을 항상 먼저해야 한다!

로컬 환경에서 Spring Boot + Redis로 구현하기

Redis를 추가하기 전 기본적인 Spring Boot 프로젝트 셋팅하기
Spring Boot 프로젝트에 Redis 셋팅 추가하기
Redis를 적용하기 전후 성능 비교해보기 (Postman)

로컬 환경에서 Nest.js + Redis로 구현하기

Redis를 추가하기 전 기본적인 Nest.js 프로젝트 셋팅하기
Nest.js 프로젝트에 Redis 셋팅 추가하기
[보충 설명] Nest.js가 v11일 경우 Redis 셋팅 방법

AWS EC2에서 Redis 활용하기

Reids를 포함한 아키텍처 구성 시 대략적으로 AWS 비용 얼마나 나오는 지
EC2, RDS, Spring Boot, Redis를 활용한 아키텍처 구성
EC2, RDS, Spring Boot, Redis 셋팅
Redis를 적용하기 전후 성능 비교해보기 (Postman)

부하 테스트를 통해 Redis 적용 전후 성능 비교하기

내가 구성한 백엔드 서버는 1초당 몇 개의 요청을 견뎌낼 수 있을까?
Redis - 부하 테스트를 위한 환경 셋팅 (k6)
Redis를 적용하기 전·후 Throughput(처리량) 비교해보기

Docker Compose로 Redis + Spring Boot 띄우기

Docker Compose로 Redis, Spring Boot 한 번에 띄울 수 있게 구성하기
AWS EC2에서 Docker Compose를 활용해 Redis, Spring Boot 띄워보기

AWS ElasticCache 활용하기

현업에서 EC2에 Redis를 설치해서 쓰지 않고 ElastiCache를 쓰는 이유
EC2, RDS, Spring Boot, ElastiCache를 활용한 아키텍처 구성
AWS ElastiCache 셋팅하기
AWS ElastiCache가 정상적으로 잘 생성됐는 지 확인하기
Spring Boot에 ElastiCache 연결하기
← 블로그 목록으로 돌아가기

Redis를 적용하기 전·후 Throughput(처리량) 비교해보기

JSCODE 박재성
JSCODE 박재성
2026. 02. 18.
author
JSCODE 박재성
category
Redis
createdAt
Dec 6, 2025 02:38 AM
isPublic
isPublic
series
비전공자도 이해할 수 있는 Redis 입문/실전
slug
redis-throughput-before-after-test
type
post
updatedAt
Feb 18, 2026 10:00

✅ 캐싱을 적용시키기 전의 Throughput 측정

  1. 캐싱 코드 주석처리하기
    1. BoardService
      @Service public class BoardService { ... // @Cacheable(cacheNames = "getBoards", key = "'boards:page:' + #page + ':size:' + #size", cacheManager = "boardCacheManager") public List<Board> getBoards(int page, int size) { Pageable pageable = PageRequest.of(page - 1, size); Page<Board> pageOfBoards = boardRepository.findAllByOrderByCreatedAtDesc(pageable); return pageOfBoards.getContent(); } }
       
  1. Spring Boot 서버 빌드 및 백그라운드 실행
    1. # 스프링 프로젝트 경로로 들어가서 아래 명령어 실행 $ ./gradlew clean build -x test # 정확한 테스트를 위해 Spring Boot 서버를 백그라운드에서 실행시키자. $ cd build/libs $ nohup java -jar -Dspring.profiles.active=prod {빌드된 jar 파일명} & # 8080번 포트에 Spring Boot 서버가 잘 실행되고 있는 지 확인 $ lsof -i:8080
       
  1. 로컬 환경에서 K6로 성능 테스트 해보기
    1. 더 정확한 성능 측정 방법이 있지만 성능 테스트에 초점을 맞춘 강의가 아니기 때문에 간편한 방법으로 측정하고자 한다.
      # K6의 스크립트 파일이 위치한 경로에서 아래 명령어 실행시키기 $ k6 run --vus 30 --duration 10s script.js
      • --vus 30 : 가상 유저(Virtual Users)를 30명으로 셋팅 (API 요청을 보내는 사용자가 30명인 것처럼 부하 생성)
      • --duration 30s : 30초 동안 테스트를 유지
       
      notion image
      평균적으로 1초에 1.6개의 요청을 처리했다는 뜻이다. 즉, 이 서비스는 1초에 최대 처리할 수 있는 요청의 처리 개수가 1.6개라는 뜻이다. 개발자답게 표현하자면 ‘현재 구축한 서비스에서 게시글 조회 API의 Throughput이 1.6 TPS다’라고 얘기할 수 있다.
 
 

✅ 캐싱을 적용시킨 후에 Throughput 측정

  1. 캐싱 코드 주석 해제하기
    1. BoardService
      @Service public class BoardService { ... @Cacheable(cacheNames = "getBoards", key = "'boards:page:' + #page + ':size:' + #size", cacheManager = "boardCacheManager") public List<Board> getBoards(int page, int size) { Pageable pageable = PageRequest.of(page - 1, size); Page<Board> pageOfBoards = boardRepository.findAllByOrderByCreatedAtDesc(pageable); return pageOfBoards.getContent(); } }
       
  1. Spring Boot 서버 빌드 및 백그라운드 실행
    1. # 스프링 프로젝트 경로로 들어가서 아래 명령어 실행 $ ./gradlew clean build -x test # 기존 서버 종료 $ lsof -i:8080 $ kill {PID 값} # 정확한 테스트를 위해 Spring Boot 서버를 백그라운드에서 실행시키자. $ cd build/libs $ nohup java -jar -Dspring.profiles.active=prod {빌드된 jar 파일명} & # 8080번 포트에 Spring Boot 서버가 잘 실행되고 있는 지 확인 $ lsof -i:8080
       
  1. 로컬 환경에서 K6로 성능 테스트 해보기
    1. $ k6 run --vus 30 --duration 10s script.js
       
      notion image
      평균적으로 1초에 385개의 요청을 처리했다는 뜻이다. 즉, 이 서비스는 1초에 최대 처리할 수 있는 요청의 처리 개수가 385개라는 뜻이다. 개발자답게 표현하자면 ‘현재 구축한 서비스에서 게시글 조회 API의 Throughput이 385이다’라고 얘기할 수 있다. Throughput이 385라는 뜻은 1초에 385개 이하의 요청까지는 견딜 수 있는 서비스라고도 해석할 수 있다.
 

✅ 성능 비교

Redis의 캐싱을 활용하니 성능이 약 240배(= 385 / 1.6) 향상되었다.
📎
이 글은 비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편) 강의의 수업 자료 중 일부입니다.