보통 로그인 토큰 관리는 Redis에서 많이 하는데
현재 프로젝트에서는 MongoDB 를 메인 디비로 사용하고 있어서
둘 중 어떤 DB로 로그인 토큰 관리하는게 적합한지 궁금해서 찾아보게 되었다.
데이터 구조 및 저장 형식
Redis 는 Key-Value 형태의 데이터 구조를 가지는 인메모리 데이터 저장소이다.
MongoDB는 Document 형태의 데이터 구조를 가지며 디스크 기반으로 데이터를 저장한다.
이러한 차이로 Redis 는 메모리 기반으로 빠른 데이터 처리가 가능하고 주로 캐싱에 사용되고
MongoDB는 대용량의 데이터를 저장하고 관리하는데 적합하다.
Redis 사용 시 장점
- 속도: Redis는 메모리 기반 데이터 스토어로, I/O가 메모리에만 집중되어 있어 조회 속도가 매우 빠르다. 이는 로그인 토큰을 주고받는 것처럼 빠른 응답이 필요한 서비스에 이상적이다.
- TTL 관리: 토큰의 만료 시간을 설정할 때 Redis의 TTL(Time to Live) 기능을 사용하여 자동으로 만료되는 로직을 쉽게 구현할 수 있다.
- 분산 환경: 여러 Redis 인스턴스를 통해 세션이나 토큰을 분산 관리할 수 있어 확장성 면에서 유리하다.
MongoDB 사용 시 고려할 점
- 속도: MongoDB는 디스크 기반 NoSQL로 Redis에 비해 속도가 느릴 수 있으며, 대량의 토큰을 저장하고 빠르게 조회해야 하는 환경에서는 Redis보다 효율이 떨어질 수 있다.
- TTL 인덱스: MongoDB도 TTL 인덱스를 통해 만료 시점을 설정할 수 있지만, 만료 주기가 분 단위로 동작하기 때문에 Redis의 실시간 만료 관리보다 세밀함이 부족할 수 있다.
- 복잡한 데이터: 토큰 외에 세션 정보에 복잡한 데이터가 포함되고 이를 검색, 필터링하는 작업이 필요한 경우에는 MongoDB의 문서 구조가 유리할 수 있다.
결론
로그인 토큰 관리에는 일반적으로 Redis가 더 적합하며, 특히 응답 속도가 중요한 경우에 유리하다.
다만, 특정 조건이나 복잡한 데이터 구조가 필요하다면 MongoDB를 사용해 볼 수도 있지만, 일반적인 토큰 관리에서는 Redis가 더 많이 사용된다.
반응형
'백엔드 > DB' 카테고리의 다른 글
[MongoDB] MongoDB Aggregate() (0) | 2024.10.12 |
---|---|
[MongoDB] MongoDB compass 설치 (GUI) (0) | 2024.10.09 |
[Mysql] 데이터 삭제하기 & AUTO INCREMENT 초기화 - DELETE, TRUNCATE, DROP (0) | 2024.08.01 |
[Mysql] Docker 환경에서 mysql 설치 후 접속 에러 - Access denied for user 'root'@'172.17.0.1' (using password: YES) (0) | 2023.12.12 |
[MySQL/Intellij] Public key retrieval is not allowed 에러 해결 (0) | 2023.09.18 |