대용량 처리 이해/Redis

Redis Session Clustering

훈지런 2023. 2. 18. 18:30

두 WAS를 띄었을때 JSESSIONID의 값이 다를것인데

graph LR 브라우저 --> 로드발란서 --> 서버1 로드발란서 --> 서버2
@GetMapping("/login")  
public String login(HttpSession session){  
    return session.getId();  
}

세션 아이디를 리턴하게 코드를 짜고

포트 8080과 8081로 따로 WAS를 띄워봤다.

다른 세션ID를 가지고 있다. 세션공유가 안되고있다.

Redis사용하기

이런 분산환경에서 redis를 사용한다면?

graph LR 브라우저 --> 로드발란서 --> 서버1 --> Redis 로드발란서 --> 서버2 --> Redis

아니 근데 RDB를 사용안하는 이유는?

  • 과연 관계형 데이터 모델이 필요할까?
  • 영속성이 필요한 데이터인가?
  • 성능 요구사항을 충족할까?

Redis를 사용하자

  • 세션데이터는 단순한 key-value구조
  • 세션 데이터는 영속성이 필요없다.
  • 세션 데이터는 변경이 빈번하고 빠른 데이터 엑세스 속도가 필요하다.
implementation("org.springframework.session:spring-session-data-redis")

추가해주고 프로퍼티 파일에
spring.session.store-type=redis 를 추가gk지만 나는 스프링 부트 3.0 으로 하고있어서 따로 추가하지 않았다.
스프링부트 3.0 부터 둘 이상의 세스토리지 구현제가 있을땐 Redis가 1순위로 알아서 고정된다고함

레디스 설정을 하고 다시 각각 따로 띄어봤더니

같은 세션 아이디를 사용한다. 자동으로 손쉽게 되는 세상 지저스 ~ !

'대용량 처리 이해 > Redis' 카테고리의 다른 글

Pub, Sub 패턴  (0) 2023.02.20
Redis Cache Layer  (0) 2023.02.19
Redis Data Type  (0) 2023.02.14
Redis (Remote Dictionary Server)  (0) 2023.02.13