redis

5BRack·2023년 4월 6일
0

CS

목록 보기
4/5

Redis?

  • 레디스는 REmote DIctionary Server 의 약자
  • 한글 그대로 변역하면 원격 사전 서버 이다.
  • database, cache, message broker으로써 사용되는 서버이다.
  • In-memory 데이터 저장소이며, key-value 기반의 NoSQL DBMS 이다.
  • In-memory 데이터 저장소란
    • 데이터 스토리지의 메인 메모리에 설치되어 운영되는 데이터베이스 관리 시스템이다.
    • 인 메모리 데이터베이스는 디스크에 최적화된 데이터베이스 보다 빠른다, 그 이유는 디스크 접근보다 메모리접근이 훨씬 빠르기 때문이다.
    • 이러한 이유로 덜 변경되고, 자주 조회되는 데이터를 캐시용도로 사용하는데 주로 사용된다.

지원 자료형

STRING

  • 모든 종류의 문자열을 Key-Value 형태로 저장할 수 있다.
  • [set / get] [key] [value] 형태로 사용된다.

LIST

  • 일반적인 Linked List의 특징을 가지고 있다.
  • 수백만 건의 데이터가 있더라도 Head와 Tail에 값을 추가 할 때에는 동일한 시간(O(n))이 걸린다.
  • 특정한 값이나 인덱스로 데이터를 조회하거나 삭제할 수 있다.
  • Pub/Sub 패턴에 사용된다.
  • push command : [LPUSH/RPUSH] [list_name] [value]
  • pop command : [LPOP/RPOP] [list_name]

HASH

  • file-value 쌍을 사용한 일반적인 해시
  • key에 대한 filed 개수는 제한이 없다.
  • hash 구조이기 때문에 조회시, 뛰어난 성능을 가진다.
  • hset command : [hset] [hash_name] [filed] [value]
  • hget command : [hget] [hash_name] [filed]

SET

  • 중복을 허용하지 않는 자료형이다.
  • 교집합, 합집합, 차집합 연산을 레디스에서 수행할 수 있다.
  • sadd comannd :[sadd] [key][**member**]
  • smember command : [**smembers] [member]**

SORTED SET

  • 중복되지 않는 여러 멤버를 저장하지만, 각각의 멤버는 스코어를 가지며 이값으로 정렬되는 자료형이다.
  • 정렬된 형태로 저장되기 때문에 인덱스를 이용하여 빠르게 조회할 수 있다.
  • SCORE는 반드시 숫자여야 한다.
  • zadd command : [zadd] [key] [score] [member]
  • zrangebylex command : [zrangebylex] [key] [min] [max]

그 외 bit/bitmap, hyperloglogs, Geospatial indexes, Stream 의 자료구조가 존재한다.

Pub/Sub

  • 특정한 topic(주제)에 대하여 해당 topic을 구독한 모두에게 메시지를 발행하는 통신 방법
  • 구독한 수신자 모두에게 메시지를 전송하는 것을 의미
  • 메시지를 클라이언트에게 던지는(throw) 시스템이기 때문에 메시지를 저장하지 않는다.
  • 즉 수신자가 메시지를 받는 것을 보장하지 않는다.

현재 접속중인 클라이언트에게 간단한 메시지를 빠르게 보내고 싶을 때, 그리고 전송된 메시지를 따로 저장하거나 수신확인이 필요없을 때, 마지막으로 100% 전송 보장은 하지 않아도 되는 메시지를 보낼 때 이용

센티넬

  • 운영환경에서 레디스는 일반적으로 마스터와 복제로 구성된다.
    운영 중 마스터에 생기면, 관리자가 이를 감지해 복제를 마스터로 올리고 클라이언트에게 새로운 마스터에 접속할 수 있도록 해주어야 한다.
  • 센티넬은 마스터와 복제를 감시하고 있다가 마스터가 다운되면 이를 감지해서 관리자의 개입 없이 자동으로 복제를 마스터로 올려준다.

주요기능

  • 모니터링 : 마스터, 복제들을 지속적으로 감시
  • 자동 장애 조치 : 마스터가 다운되었을시, 복제를 마스터로 승격
  • 알림 : 레디스 인스턴스들이 fail-over 되었을 때 pub/sub 으로 어플리케이션에 알리거나 관리자에게 이메일 or SMS로 알릴 수 있다.

클러스터

성능 향상 기법

  • 스케일 업(Scale Up) : 단일 머신에 CPU, 디스크 등을 추가해서 물리적인 성능을 향상 시키는 것 - 수직적
  • 스케일 아웃(Scale Out) : 적절한 성능의 머신을 추가해서 전체적인 성능을 향상하는 방법 - 수평적 , 소프트웨어가 scale out을 지원해야 함

대량 데이터 처리, 저장 방법

  • 데이터 파티셔닝 : 대량의 데이터를 처리하기 위해 DBMS 안에서 분할하는 방식
  • 데이터 샤딩 : 대량의 데이터를 처리하기 위해 여러 개의 DBMS에 분할하는 방식

Redis Cluster를 통해 얻을 수 있는 이점

  • 스케일 아웃
  • 샤딩
  • 가용성

레디스 클러스터 목표

  • 1000대의 노드까지 확장할 수 있도록 설계
  • 노드 추가, 삭제 시, 레디스 클러스터 전체를 중지할 필요 없고 키 이동 시에만 해당 키에 대해서만 잠시 멈출 수 있다.
  • 센티넬 기능을 포함하고 있다.
  • 클러스터 제한 사항 - MSET 같은 멀티 키 명령어는 제한된다.

0개의 댓글

관련 채용 정보