[왜?] RefreshToken을 Redis에 저장할까?

2023. 10. 25. 10:20·왜?
반응형
Redis를 통한 RefreshToken 관리, Redis를 통해 RefreshToken 구현하기

구글에 RefreshToken Redis를 검색하는 나오는 결과다.

 

항상 사람들은 RefreshToken을 Redis에 저장해야 한다고 말했다. 그런데 왜? RefreshToken을 Redis에 저장하냐고 물어보면 "그게 대중적인 방법이니까"라고 말하는 사람이 대부분일 것이다.

 

RefreshToken을 Redis에 저장하는 이유

1. TTL(Time-To-Live)

대부분의 사람들이 TTL 기능 때문에 Redis에 RefreshToken을 저장할 것이다.

Redis는 TTL 기능을 제공해, 데이터의 만료 시간을 설정할 수 있습니다.

redisTemplate.opsForValue().set(key, refreshToken, REFRESH_TOKEN_EXPIRATION, TimeUnit.SECONDS);

일정 시간이 지난 뒤에는 RefreshToken이 자동적으로 삭제되므로 보안성 측면에서 장점이 있다.

 

2. In-Memory

ㅔ

레지스터 - 캐시 - 메모리 - 디스크 순으로 속도가 빠른 것을 알 수 있다.

이때 Redis는 RAM(메모리)에 저장이 되고, 디스크에 저장되는 데이터베이스에 비해 속도 측면에서 장점이 있다.

"아니 그러면 Cache(캐시)에 저장하면 더 좋은거 아니야?"
  1. Cache는 어플리케이션이 재시작되거나 시스템이 다운되면 저장된 데이터가 삭제된다.
  2. Cache는 만료 설정을 해줄 수가 없다.
  3. Redis는 Cache에 비해 데이터 구조가 다양하다.(Hash, Set, String, Sorted, List)

 

3. OpsForValue

Redis를 사용해 보신 분이라면 "아 이거 좋지"라는 생각을 하실 수 있습니다.

OpsForValue란 Redis의 RedisTemplate 클래스에서 제공하는 메소드중 하나로, String 연산을 위한 연산자를 반환합니다. Set(값 설정), Get(값 조회), Increment(값 증가)등 다양한 연산을 할 수 있습니다.

redisTemplate.opsForValue().set(key, refreshToken, REFRESH_TOKEN_EXPIRATION, TimeUnit.SECONDS);

이렇게 redis에 (key, refreshToken) 형식으로 저장 한 뒤, key 값으로 조회 가능합니다.

redisTemplate.opsForValue().get(key);

파이썬의 Dictionary, 자바의 HashMap을 생각하시면 이해하기 쉽습니다.

 

4. 안정성

Redis는 디스크에 데이터를 저장할 수 있으므로 서버 재시작 또는 장애 발생 시에도 RefreshToken을 안전하게 보관할 수 있습니다. (인 메모리 방식이지만 디스크에 저장할 수 있다)

반응형
저작자표시 동일조건
'왜?' 카테고리의 다른 글
  • [왜?] DTO <--> Entity 어느 방향으로 하는 것이 효율적일까? (feat. mapper)
  • [왜?] 파일 전송에 presigned url이라는 방법을 사용했어?
  • [왜?] dto에 @getter 어노테이션이 없으면 안 돼?[트러블슈팅]
  • [왜?] MVC 패턴을 선택했을까? feat.우테코
코딩하는_대학생
코딩하는_대학생
Java Developer, Open Source Enthusiast, Proud Son
  • 코딩하는_대학생
    코딩하는 대학생에서 개발자까지
    코딩하는_대학생
  • 전체
    오늘
    어제
    • 분류 전체보기 (216)
      • 코딩하는 대학생의 책 추천 (8)
        • 클린코드 (5)
        • 헤드퍼스트 디자인패턴 (3)
      • Backend (6)
        • Spring (14)
        • AWS (3)
        • 회고 (4)
        • Redis (5)
        • 다양한 시각에서 바라본 백엔드 (3)
      • Python (35)
        • 개념 및 정리 (15)
        • 백준 문제풀이 (20)
      • JAVA (17)
        • 개념 및 정리 (14)
        • 백준 문제풀이 (2)
      • 왜? (7)
      • C언어 (42)
        • 개념 및 정리 (9)
        • 백준 문제풀이 (32)
      • 개인 공부 (27)
        • 대학 수학 (5)
        • 대학 영어 (10)
        • 시계열데이터 처리 및 분석 (5)
        • 컴퓨터 네트워크 (6)
        • 운영체제 (1)
      • 솔직 리뷰 (23)
        • 꿀팁 (6)
        • IT기기 (1)
        • 국내 여행 (7)
        • 맛집 (2)
        • 알바 리뷰 (2)
      • 대외활동 (17)
        • 체리피우미 3기 (4)
        • 꿀잠이들 6기 (13)
      • 음식 평가 (1)
      • 일상 & 근황 (2)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩하는_대학생
[왜?] RefreshToken을 Redis에 저장할까?
상단으로

티스토리툴바