문서 목적

해당 문서는 Redis에 대해 간략하게 정리한 문서이다.

Redis

The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker.
> https://redis.io/

Redis는 분산 캐시 시스템이면서 NoSQL 데이터베이스처럼 대규모 데이터 관리 능력도 갖춘 IMDG(In-Memory Data Grid) 소프트웨어이다.
key-value 형식의 데이터 구조를 분산 서버상의 메모리에 저장하면서 고성능의 응답 속도를 보장한다.
인메모리 데이터를 영구적으로 저장할 수 있는 스냣샵 기능을 제공하며, 정합성을 보장한다. (AOF(Append Only File) 기능)
Sharding과 Replication도 지원하고 있어 높은 성능이 필요한 서비스를 많이 사용한다.

구성 요소

  • Master : 분산 노드 간의 데이터 복제와 Slave 서버의 관리를 위한 마스터 서버
  • Slave : 다수의 Slave 서버는 주로 읽기 요청을 처리하고, Master 서버는 쓰기 요청을 처리
  • Sentinel : Redis 3.x부터 지원하는 기능으로, Master 서버에 문제가 발생할 경우 새로운 Master를 선출하는 기능
  • Replication : Master 서버에 쓰인 내용을 Slave 서버로 복제해서 동기화 처리
  • AOF / Snapshot : 데이터를 영구적으로 저장하는 기능으로, 명령어를 기록하는 AOF와 스냅샷 이미지 파일 방식을 지원

Architecture

  1. Single Master
    - Redis architecture 개발과 테스트 환경에 주로 사용
    - 설치하기 쉽고 단일 서버만으로도 빠른 응답 속도와 안정적인 기능을 제공
    - 소규모이면서 중요도가 비교적 낮은 시스템 간의 데이터 공유에 종종 사용
  2. Single Master /Multi Slave
    - Master인 쓰기 노드와 Slave인 읽기 노드로 분리 구성
    - Master에 쓰여진 데이터는 복제를 통해 Slave 노드로 복제되면서 데이터 정합성을 유지
    - 쓰기 / 읽기 노드를 분리해서 전체적인 성능을 향상시킨 구성
    - Slave 2 같이 읽기 노드를 추가해서 성능을 극대화
  3. HA 클러스터링 구조(버전 3.x부터 지원)
    - Master 서버 장애 발생 시 쓰기 요청이 실패하면서 데이터 유실이 발생할 수 있는 취약한 구조
    - 클라이언트가 쓰기 노드와 읽기 노드를 알고 있어야 하므로 클라이언트 프로그램에 복잡도가 발생
    - Sentinel이라는 노드 모니터링/제어 컴포넌트가 추가
    - Sentinel이 노드들을 모니터링하고 있다가 Master 노드로 지정하고, 문제가 됐던 Master 노드와 연결을 끊으면서 HA 기능을 제공

Redis test - Ubuntu

출처

  • 실무로 배우는 빅데이터 기술 책
profile
열심히 정리하는 습관 기르기..

0개의 댓글