스프링 부트에서 세션을 redis에 저장하는 방법입니다.
저번에 세션 클러스터링 하는 방법으로 JDBC로 DB에 저장하는 글을 올렸는데
JDBC를 사용하는 것은 디스크 IO를 사용하기 때문에 성능면에서 부족한 점이 있습니다.
https://tiqndjd12.tistory.com/253
이전에 작성한 스프링 부트 세션 JDBC에 이어서 하겠습니다.
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에 redis ip와 port를 작성하고
세션 저장 타입을 redis로 설정합니다.
메인 어플리케이션 코드에 @EnableRedisHttpSession 어노테이션 추가합니다.
@EnableRedisHttpSession 어노테이션은 redis를 스프링 부트 세션 스토어로 설정하는 역할을 담당합니다.
redis 설정을 담당하는 RedisConfig 클래스입니다.
application.yml에 작성한 redis ip와 port를 RedisConfig 클래스의 속성으로 받습니다.(16 ~ 20라인)
redis에 커넥션을 맺는 RedisConnectionFactory 빈을 앞의 ip와 port를 기반으로 생성합니다.(22 ~ 28라인)
redis에 데이터 연산을 처리하는 RedisTemplate 빈을 생성합니다.(30 ~ 37라인)
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 |