IT 개발 라이프/CS

Redis란? (고성능 인메모리 데이터 스토어)

10Biliion 2024. 12. 27. 08:42

1. Redis란 무엇인가?

Redis(레디스)는 "Remote Dictionary Server"의 약자로, 오픈 소스 기반의 인메모리 데이터 스토어입니다. 주로 키-값(key-value) 구조를 기반으로 데이터를 저장하며, 다양한 데이터 구조를 지원합니다. Redis는 캐싱, 세션 관리, 실시간 데이터 분석 등 빠른 데이터 액세스가 필요한 다양한 응용 프로그램에서 사용됩니다.

 

2. 주요 특징

2.1 인메모리 데이터베이스

Redis는 데이터를 메모리에 저장하여 매우 빠른 읽기/쓰기 속도를 제공합니다. 이 덕분에 캐시(Cache)로 사용하기에 적합합니다.

2.2 데이터 영속성

Redis는 기본적으로 데이터를 메모리에 저장하지만, 필요에 따라 데이터를 디스크에 영구 저장할 수도 있습니다. 이를 통해 데이터 유실 가능성을 줄이고 데이터 복구가 가능합니다.

  • RDB (Redis Database): 특정 간격으로 스냅샷을 저장.
  • AOF (Append Only File): 모든 쓰기 작업을 로그 파일에 기록.

2.3 다양한 데이터 구조 지원

Redis는 단순한 키-값 저장소를 넘어 다음과 같은 데이터 구조를 지원합니다:

  • String: 일반 문자열 또는 바이너리 데이터 저장.
  • Hash: 필드-값 쌍으로 구성된 데이터.
  • List: 순서가 있는 값들의 리스트.
  • Set: 고유한 값들의 집합.
  • Sorted Set: 순서가 있는 집합.
  • Bitmap, HyperLogLog, Stream 등: 고급 데이터 타입 지원.

2.4 Pub/Sub 메시징 시스템

Redis는 Publish/Subscribe 기능을 통해 메시지 브로커 역할도 수행할 수 있습니다. 이 기능을 사용하면 다양한 클라이언트 간에 메시지를 교환할 수 있습니다.

2.5 클러스터링과 고가용성

Redis는 클러스터링 기능을 통해 데이터를 여러 노드에 분산 저장할 수 있습니다. 또한, Sentinel을 이용해 고가용성(HA)을 보장하며 장애 발생 시 자동 복구를 지원합니다.

 

3. Redis의 활용 사례

3.1 캐싱

Redis는 짧은 지연 시간과 높은 처리량 덕분에 캐싱 계층으로 널리 사용됩니다. 예:

  • 웹 페이지 캐싱
  • 데이터베이스 쿼리 결과 캐싱

3.2 세션 관리

Redis는 속도가 빠르고 데이터 구조를 유연하게 사용할 수 있어 사용자 세션 정보를 저장하는 데 적합합니다.

3.3 실시간 데이터 분석

Redis는 실시간으로 증가하는 데이터(예: 실시간 방문자 수, 클릭 수)를 처리하는 데 탁월합니다.

3.4 Pub/Sub 시스템

채팅 애플리케이션, 실시간 알림 시스템 등 메시징 시스템 구축에 활용됩니다.

3.5 큐 및 작업 스케줄링

Redis의 List와 Sorted Set을 이용해 작업 큐를 구현하거나 우선순위 기반 작업 스케줄링을 수행할 수 있습니다.

 

4. Redis와 다른 데이터베이스의 차이점

특징 Redis RDBMS (예: MySQL)
저장 방식 메모리 기반 디스크 기반
데이터 구조 다양한 구조 지원 테이블(관계형)
성능 매우 빠름 상대적으로 느림
영속성 선택적 (RDB, AOF) 기본적으로 지원
확장성 클러스터 및 샤딩 지원 샤딩 필요시 직접 구현

 

5. Redis를 사용할 때의 주의점

  • 메모리 관리: Redis는 인메모리 데이터베이스이므로 메모리 용량이 성능과 직접적으로 연결됩니다.
  • 데이터 영속성: 설정에 따라 데이터 유실 가능성이 있으므로 RDB와 AOF를 적절히 설정해야 합니다.
  • 분산 환경: 클러스터 설정은 복잡할 수 있으니 설계 단계에서 주의가 필요합니다.