Redis 는?
- REmote DIctionary Server
In-Memory
메모리 기반의 data store
key-value
구조 데이터 관리 시스템
NoSQL
: 비관계형
쿼리 작성 없이 데이터 조회 -> 속도가 빠르다!
- 다양한
Collection
사용 가능
String, List, Set, Sorted Set, Hash 등
- 데이터 저장 만료 시점 설정 가능 :
Expire
문제인식
- 대외기관 Was to Was
https api
호출 시, 고객 정보로 인증된 접근토큰을 요청 공통 파라미터 설정 필요
- 접근토큰 관리 방법 고민
1) https api 호출할 때마다 토큰발급 API를 요청하는 것은 비효율적
2) Frontend 에서 접근토큰을 관리하는 것은 용도에 맞지 않고, 보안 이슈 예상
3) Backend 에서 RDB insert 는 짧은 주기의 데이터 삭제 프로세스가 필요
해결방법
- Redis에서 접근토큰을 관리한다면?
1) Redis에서 빠른 속도로 접근토큰 get 가능
2) 접근토큰이 Backend 에서만 관리, 사용하기 때문에 보안 이슈 X
3) 데이터 삭제 프로세스 고민 X => 만료 시간 설정 가능, 유효시간 설정을 통해 토큰발급 API 호출
로직구현
- key : "고정문자열" + 고객고유번호
- value : redis.get(key)
1. null : 토큰발급 API 호출
2. 유효시간 만료 : 토큰발급 API 호출
3. 유효 : value 사용
- redis.set(key, tknIsDto) : 토큰발급 API 호출 후
Redis 도입/운영 주의할 점
- Redis는 In-Memory Data Store 이기 때문에, 물리적 memory 이상 사용 시 문제 발생
- Maxmemory 설정하더라도 이보다 더 사용할 가능성 있음
- Redis 적용 전 인프라팀 Redis 용량 산정 필수 (현재, 예상 MAU 정보)
- Redis 모니터링 방법 도입 필수 ex) redisinsight
참고
Redis란 무엇일까?