실전! Redis 활용-신동현

post-thumbnail

인프런에 있는 "실전! Redis 활용"-신동현님의 강의 내용 입니다.
강의에 더 자세한 내용과 사례들을 안내해주고 있습니다.

Redis 특징

  1. In-Memory : 모든 데이터를 RAM에 저장 (백업 / 스냅샷 제외)
  2. Single Threaded : 단일 thread에서 모든 task 처리
  3. Cluster Mode : 다중 노드에 데이터를 분산 저장하여 안정성 & 고가용성 제공
  4. Persistence : RDB(Redis Database) + AOF(Append only file) 통해 영속성 옵션 제공
  5. Pub/Sub : Pub/Sub 패턴을 지원하여 손쉬운 어플리케이션 개발(e.g 채팅, 알림
    등)

Redis 사용 사례

  • Caching : 임시 비밀번호(One-Time Password), 로그인 세션(Session)
  • Rate Limiter : Fixed-Window/Sliding-Window Rate Limiter(비율 계산기)
  • Message Broker : 메시지 큐(Message Queue)
  • 실시간 분석/계산 : 순위표(Rank/Leaderboard), 반경 탐색(Geofencing), 방문자 수 계산(Visitors Count)
  • 실시간 채팅 : Pub/Sub 패턴

Redis 데이터 타입

타입내용
String문자열, 숫자, serialized object(JSON string) 등 저장
ListString을 Linked List로 저장 -> push / pop에 최적화. O(1) Queue(FIFO) / Stack(FILO) 구현에 사용
SetUnique string을 저장하는 정렬되지 않은 집합. Set Operation 사용 가능(e.g. intersection, union, difference)
Hashfield-value 구조를 갖는 데이터 타입. 다양한 속성을 갖는 객체의 데이터를 저장할 때 유용
ZSetUnique string을 연관된 score를 통해 정렬된 집합(Set의 기능 + 추가로 score 속성 저장)
Streamsappend-only log에 consumer groups과 같은 기능을 더한 자료 구조
Geospatial좌표를 저장하고, 검색하는 데이터 타입. 거리 계산, 범위 탐색 등 지원
Bitmaps실제 데이터 타입은 아니고, String에 binary operation을 적용한 것. 최대 42억개 binary 데이터 표현 = 2^32(4,294,967,296)
HyperLogLog집합의 cardinality를 추정할 수 있는 확률형 자료구조. 정확성을 일부 포기하는 대신 저장공간을 효율적으로 사용(평균 에러 0.81%)
BloomFilter(=membership test)element가 집합 안에 포함되었는지 확인할 수 있는 확률형 자료 구조

Redis 특수 명령어

SET NX/XX. Pub/Sub. Pipeline. Transaction 등

데이터 타입 활용

  • 임시 비밀번호(One-Time Password)
  • 소셜 피드(SNS Activity Feed)
  • 로그인 세션(Session
  • 방문자 수 계산(Visitors Count)

Redis 사용 시 주의사항

  • O(N) 명령어 : 오래 걸리는 O(N) 명령어 수행시, 전체적인 어플리케이션 성능 저하
  • Thundering Herd Problem : 병렬 요청이 공유 자원에 대해서 접근할 때, 급격한 과부하가 발생하는 문제
  • Stale Cache Invalidation : 캐시의 유효성이 손실되었거나 변경되었을 때, 캐시를 변경하거나 삭제하는 기술
profile
숲을 보고 나무도 보자.

0개의 댓글