본문 바로가기

dev/스프링

Spring Boot Session Store Type Redis

스프링 부트에서 세션을 redis에 저장하는 방법입니다.
 
저번에 세션 클러스터링 하는 방법으로 JDBC로 DB에 저장하는 글을 올렸는데
 
JDBC를 사용하는 것은 디스크 IO를 사용하기 때문에 성능면에서 부족한 점이 있습니다.
 
https://tiqndjd12.tistory.com/253

 

Spring Boot Session Store Type JDBC

스프링 부트에서 세션은 주로 메모리에 저장합니다. 하지만 이렇게 했을 때 어플리케이션을 재부팅하면 세션이 초기화되는 단점이 있습니다. 이런 문제점을 해결하려면 어플리케이션 간의 세

tiqndjd12.tistory.com

 
이전에 작성한 스프링 부트 세션 JDBC에 이어서 하겠습니다.
 
 

pom.xml

 
pom.xml에서 기존 spring-session-jdbc는 주석처리하고
 
spring-boot-starter-data-redis와 spring-session-data-redis 라이브러리를 추가합니다.
 
spring-boot-starter-data-redis는 스프링 부트와 redis 사이에 데이터 처리를 지원하는 라이브러리입니다.
 
spring-session-data-redis는 스프링 부트 세션 스토어를 redis로 사용할 수 있도록 도와주는 라이브러리입니다.
 

application.yml

 
application.yml에 redis ip와 port를 작성하고
 
세션 저장 타입을 redis로 설정합니다.
 

@EnableRedisHttpSession 추가

 
메인 어플리케이션 코드에 @EnableRedisHttpSession 어노테이션 추가합니다.
 
@EnableRedisHttpSession 어노테이션은 redis를 스프링 부트 세션 스토어로 설정하는 역할을 담당합니다.
 

RedisConfig 클래스

 
redis 설정을 담당하는 RedisConfig 클래스입니다.
 
application.yml에 작성한 redis ip와 port를 RedisConfig 클래스의 속성으로 받습니다.(16 ~ 20라인)
 
redis에 커넥션을 맺는 RedisConnectionFactory 빈을 앞의 ip와 port를 기반으로 생성합니다.(22 ~ 28라인)
 
redis에 데이터 연산을 처리하는 RedisTemplate 빈을 생성합니다.(30 ~ 37라인)
 

redis 화면

 
docker로 실행 중인 redis를 확인해 보면 어플리케이션 세션이 저장된 것을 확인할 수 있습니다.
 
지금까지 개발하면서 세션 클러스터링 처리하는 것에 고민이 많았는데 redis를 사용하면 쉽게 해결할 수 있을 거 같습니다.

'dev > 스프링' 카테고리의 다른 글

Spring Boot Redis Subscriber  (0) 2024.02.08
Spring Boot Redis Publisher  (0) 2024.02.05
Spring Boot yml 외부 참조  (0) 2023.12.02
Spring Boot Session Store Type JDBC  (0) 2023.11.27
Spring Boot OAuth2 로그인  (0) 2023.11.14