본문 바로가기

데이터베이스

[데이터베이스] Redis란

728x90

Redis란?

Redis는 Remote Dictionary Server의 약자로, 오픈 소스 데이터 구조 서버입니다.
데이터를 Key-Value 형태로 저장하며, 다양한 종류의 데이터 구조를 지원합니다.

 

 

 

Redis 특징

  1. 지속성(Persistence)
    • 메모리 기반 DB이지만 시스템이 다운되더라도 데이터를 디스크에 저장하여 지속성을 제공합니다.
  2. 데이터 복제(Replication)
    • Master-Slave 구조를 통해 장애 복구(Failover) 및 백업을 지원합니다.
  3. 트랜잭션 지원
    • Redis 트랜잭션으로 작업 중 하나라도 실패 시 이전 상태로 복구합니다.
  4. Pub/Sub 모델 지원
    • 퍼블리시/구독 모델 기반의 실시간 데이터 처리를 지원합니다.
  5. 빠른 속도
    • 메모리 기반 DB이므로 HDD 기반 DB보다 속도가 빠릅니다.
  6. 싱글 스레드 기반
    • 싱글 스레드로 동작하여 레이스 컨디션을 방지합니다.

 

 

데이터베이스가 있음에도 Redis를 사용하는 이유

1. 접근 속도

  • 메모리에 접근하는 속도가 디스크에 접근하는 속도보다 훨씬 빠릅니다.
  • 이를 통해 SNS와 같이 대규모 요청이 들어오는 환경에서 데이터베이스 부하를 줄일 수 있습니다.
  • Redis는 이러한 환경에서 캐시 서버 역할을 합니다.

2. 캐싱

  • 캐싱은 자주, 반복적으로 요청되는 데이터를 임시로 저장하여 빠르게 제공하는 기술입니다.
  • 데이터베이스 접근 대신 Redis를 통해 데이터를 가져와 성능을 향상시킵니다.

3. 다양한 데이터 구조 지원

다양한 데이터 구조로 여러 활용 사례에 대응합니다.

  • String: 간단한 Key-Value 저장
  • List: 메시지 큐, 작업 대기열
  • Set: 중복 없는 데이터 저장
  • Sorted Set: 우선순위 큐, 랭킹 시스템
  • Hash: 복잡한 객체 저장
  • Bitmap, HyperLogLog: 비트 연산 및 통계 작업

클러스터링

  • 여러 Redis 서버를 클러스터로 묶어 데이터를 분산 저장/처리하는 구조입니다.
  • 이를 통해 성능 향상, 확장성, 고가용성을 제공합니다.

클러스터링 필요성

  • 단일 서버의 메모리 크기와 처리 능력 한계를 해결합니다.
  • 서버 장애 시 데이터를 지속적으로 사용할 수 있도록 고가용성 제공을 합니다

사용이 간단하고 유연함

  • 직관적인 명령어 기반 API 제공합니다
  • 다양한 언어 클라이언트를 지원하여 애플리케이션 통합이 용이합니다

 

 

Redis에 대한 궁금증

1. 데이터는 일관성 있게 저장되는가?

  • Redis는 싱글 스레드 이벤트 루프 기반으로 동작하며, 한 번에 하나의 작업을 처리합니다.
    모든 읽기/쓰기 작업은 순서대로 대기 큐에서 처리됩니다.
  • 시간이 많이 걸리는 작업은 Redis를 사용하는 데 적합하지 않으며, 간단한 작업에 활용됩니다.
  • 트랜잭션을 지원하며, 작업 실패 시 이전 상태로 롤백하여 데이터 불일치를 방지합니다.

2. Redis 서버가 다운되면 어떻게 되는가?

  • Redis는 Master-Slave 구조로 데이터 복제를 지원합니다.
    • 마스터 노드: 모든 요청을 처리하는 메인 노드.
    • 슬레이브 노드: 마스터의 데이터를 비동기적으로 복제하며, 주기적으로 동기화.
  • Failover 지원: 마스터가 다운되면 슬레이브 노드가 자동으로 승격되어 마스터 역할을 수행합니다.

3. 데이터는 영속성으로 저장해야 하는데 가능한가?

Redis는 두 가지 영속성 방식을 제공합니다:

  1. AOF(Append-Only File)
    • 모든 쓰기 명령을 로그 파일에 저장.
    • 장애 발생 시 로그 파일을 재실행하여 데이터 복구 가능.
  2. RDB(Snapshotting)
    • 특정 주기마다 데이터를 디스크에 스냅샷 형태로 저장.
    • 빠른 복구 가능하지만 저장 주기 사이의 데이터는 복구되지 않을 수 있음.

AOF와 RDB의 조합

  • RDB: 빠른 복구를 위한 기본 옵션.
  • AOF: 세밀한 데이터 일관성을 제공.
  • 두 방식을 조합하여 영속성과 복구 속도를 최적화합니다.

 

 

Redis를 사용할 때 주의해야할 점

  • Redis는 메모리에 데이터를 저장하기 때문에 메모리 크기가 저장 가능한 데이터의 한계를 결정합니다.
  • 싱글 스레드 기반 처리를 하기 때문에 CPU 바운드 작업이나 오래 걸리는 명령어는 영향을 끼칠 수 있습니다.
  • 클러스터 운영을 할 때 복제와 데이터 분산 관리가 복잡할 수있습니다.
728x90

'데이터베이스' 카테고리의 다른 글

데이터베이스의 정의와 특징  (0) 2024.07.05