반응형
개요
이번에 플랫폼 2차 인증 관련하여 API를 개발을 하면서, 해당 key를 Redis에 저장 하여 소멸 및 등록 하게끔 개발을 진행하였다.
- 그 중에서 QR 코드로 인증 하는 부분에서 백엔드에서 2차인증에 대한 random key를 생성
- 해당 random key를 캐싱 용도로 redis에 저장
- 미로그인 시 5분 후 소멸
- 로그인 시 해당 유저 정보에 random key를 고유 key로 저장
그 과정에 처음으로 Redis를 사용하게 되면서 사용법과 간단한 명령어를 기록하려고 한다.
Redis의 개념
Redis란?
- Redis = Remote dictionary server [원격 저장소 서버]
- 중요한 점은 key-value 형식으로 dicitonary 저장소
- In-Memory Data Structure Store
- 프로세스로 존재, 보통 remote에 존재
- DB, Cache, Message, Broker로 사용
- Open Source
- Support data structures (key:value)
- Strings, set, sorted-set, hashes, list
- Hyperloglog, bitmap, geospatial index
- Stream
- 다양한 기능을 제공
- Build-In Replication
- 트랜잭션
- different levels of on-disk persistence
- 클러스터링 등등
- Only 1 Committer
- Redis 소스 코드를 고칠 수 있는 권한이 있는 사람은 딱 한 명만 지정
Cache
Redis는 캐싱을 위해 많이 사용, 캐싱에 대해 알면 도움이 된다.
cache란?
- Cache는 나중에 요청을 결과를 미리 저장해두었다가 빠르게 서비스를 해주는 것을 의미
- ex. Factorial -> 10! = 10 * 9! (9!를 캐싱해두면 연산이 훨씬 빨라짐)
- ex. DP
- 운영체제도 CPU가 디스크에 접근하는 속도가 느리므로, 중간에 캐시를 많이 둬서 이를 빠르게 사용하도록 한다.
- 파레토 법칙
- 20:80 법칙으로, 우리 사회에서 일어나는 현상의 80%는 20%의 원인으로 인하여 발생한다. (캐싱을 잘 설명해주는 유비쿼터스)
- 즉, 전체 요청의 80%는 20%의 사용자이다. (캐싱을 사용해야 하는 이유)
아주 추상적인 웹 서비스 구조
- 캐싱을 적용하지 않은 구조
- DB안에 모든 데이터가 존재하는 구조.
- 디스크에 데이터를 저장하는 일반적인 구조.
Look aside Cache
- Web Server는 데이터가 존재하는지 Cache를 먼저 확인한다.
- Cache에 데이터가 있으면 Cache에서 값을 가져온다.
- Cache에 데이터가 없다면 DB에서 데이터를 가져와서 Cache에 저장하고 값을 가져온다.
- Write하는 방식
- 방법1. 애플리케이션이 새로운 데이터 쓰기 혹은 업데이트할 때 캐시와 DB 모두에 같은 작업을 실행하는 방법.
- 방법2. 애플리케이션의 모든 쓰기 작업은 DB에만 적용되고, 기존의 캐시 데이터를 무효화시키는 방법.
Write Back
- Web Server는 모든 데이터를 Cache에만 저장한다.
- Cache에 특정 시간동안의 데이터가 저장된다.
- 그리고 배치처리를 통해 Cache에 있는 데이터를 DB에 저장한다.
- DB에 저장되었다면 Cache에는 해당 데이터를 삭제한다.
- 이 방식의 단점
- 장애가 생기면 데이터가 날아갈 수도 있다. 안정성 부분에서 불안한다.
- 그래서 로그를 Redis에 넣어두고 배치적으로 저장할 때 많이 사용된다.
Redis는 언제 사용되는가?
- Remote Data Store
- A 서버, B 서버, C 서버에서 데이터를 공유하고 싶을 때
- 한대에서만 필요한다면, 전역 변수를 쓰면 되지 않는가?
- Redis 자체가 Atomic을 보장해주기 때문. (싱글 스레드라.. Thread Safe하다)
- 물론 특정 상황에서 완벽하진 않다고 한다.
- 주로 많이 사용되는 곳
- 인증 토큰 등을 저장 (Strings 또는 hash)
- Ranking 보드로 사용 (Sorted Set)
- 유저 API Limit
- 잡 큐 (list)
Redis 운영
- Redis 운영 부분은 크게 4가지로 구분
- 메모리 관리
- O(N) 관련 명령어 주의
- Replication
- 권장 설정 Tip
반응형
'Database > Redis' 카테고리의 다른 글
[Redis] Redis 설치 및 사용 (0) | 2024.01.17 |
---|