RefreshToken을 서버 어디에선가 저장을 해둬야하는데 왜 다른 DB가 아니라 Redis를 택하는 걸까요?

Redis의 특징과 RefreshToken 의 특징을 살펴보면 그 이유를 알 것 같습니다!

Redis의 특징

Redis는 키(Key) - 값(Value) 쌍의 해시 맵과 같은 구조를 가진 비관계형(NoSQL) 데이터베이스 관리 시스템(DBMS) 입니다.

가장 큰 특징으로는 인-메모리(In-memory) 데이터 구조 저장소로 메모리에 데이터를 저장합니다.

❗ RAM과 ROM의 차이는 안다루겠습니다.

따라서 속도가 빠르지만, 많은 데이터가 저장되면 치명적인 문제가 발생할 수 있습니다.

또한 싱글스레드 사용으로 context switching이 발생하지 않는 등 속도가 빠른 장점도 있습니다.

또 다른 특징으로는 캐시처럼 데이터 만료일을 정할 수 있습니다.

위의 특징을 봐서 Redis는 속도가 매우 빠르지만, 아주 단순하고 간단한 적은 데이터만 적재하기에 적합하다는 생각이 들었습니다.

그럼 RefreshToken 도 그런 특징에 부합할까요?

RefreshToken의 특징 및 권장 이유

RefreshToken 은 JWT 토큰 방식 로그인에서 AccessToken의 탈취를 고려하여, AccessToken의 유효기간을 짧게 하고 RefreshToekn 을 통해 재발급을 지속적으로 받게 하는 방식으로 사용합니다.

RefreshToken도 유효기간을 조금 길게 설정해서, RefreshToken 탈취를 조금 방지할 수 있습니다.

이때 Redis의 데이터 만료일을 사용해서, 자동으로 삭제되게끔 사용할 수 있습니다.

또한 RefreshToken 은 Key-Value 만 필요한 데이터이고, 아주 간단한 데이터이기에 Redis에 사용을 할 수있습니다.