[Redis] Redis란 무엇인가?

728x90
반응형
SMALL

Redis (Remote Dicionary System)

Key - Value 형태의 값을 저장할 수 있는 하나의 In-Memory 저장소이다.

  • 주로 메모리에 상주하면서 RDBMS의 Cache 솔루션으로 사용된다.
  • 빠른 처리 속도와 검증된 소프트웨어 안정성을 제공한다.
  • 고성능 In-Memory Key-Value Document Storage이다.
    • 서비스 요청이 증가하여 DB 요청이 많아지면 DB 부하가 증가한다.
    • 이때 메모리 캐시가 적용되면 성능 및 처리 속도가 향상되고 DB 부하도 줄어든다.

특징

  • 데이터 가용성과 영속성을 지원
  • NoSQL인데, 메모리에 상주하며 빠른 읽기/쓰기를 지원
  • 수평적 확장을 위한 Scale-Out 지원
  • Read 성능을 위한 Master-Slave 지원
  • Write 성능을 위한 Master Sharding 지원
  • Key Expiration, Transaction, Pub/Sub 지원
  • 모든 커맨드에 비동기-콜백 옵션 지원

장점

  • Key-Value 쌍을 512MB까지 저장 가능하다. 단일 항목에 대해 최대 1GB의 데이터를 지원한다.
  • Redis Hashing 자체 메커니즘을 사용하여 데이터를 키와 맵, 즉 문자열 필드 및 문자열 값 형태로 저장한다.
  • 무중단 서비스를 제공한다.
  • 메모리를 활용하면서 영속적인 데이터 보존이 가능하다.
    • 명령어를 이용하여 명시적 삭제를 설정하지 않으면 데이터가 삭제되지 않는다.
    • 디스크에 데이터를 기록하기에 Redis 메모리가 날아가도 복구가 가능하다.
    • 스냅샷 기능을 이용하여 특정 시점으로 복구할 수 있다.
  • 다양한 API를 제공한다.

단점

  • Key-Value 형태로 저장된 데이터를 Redis 내에서 자체 처리하는 것이 어렵다.
  • 메모리 파편화가 발생하기 쉽다.
  • 대규모 데이터에 대한 응답 속도가 불안정하다.

 

Redis Architecture

Redis Topology

Redis는 Master-Slave 형태로 데이터를 복제해서 운영할 수 있다. Master-Slave 간 복제는 Non-Blocking 상태로 이루어진다.

 

Redis Sharding

Redis에서 데이터를 샤딩하여 Read 성능을 높일 수 있다.

 

Redis Cluster

Redis는 클러스터링을 지원하기에 실무에서는 주로 클로스터로 묶어서 가용성 및 안정성 있는 캐시 매니저로 사용하고 있다.

 

728x90
반응형
LIST