레디스(Redis) 이해하기

SEUNGJUN·2024년 5월 22일
0

Redis

목록 보기
1/1
post-thumbnail

오픈 소스 인메모리(in-memory) 데이터 구조 스토어로, 다양한 데이터 구조를 지원하며, 매우 빠른 성능을 자랑한다. 주로 캐시, 세션 저장소, 메시지 브로커 등 다양한 용도로 사용된다.

인메모리 (in-memory)

컴퓨터 과학에서 사용되는 용어로, 데이터를 주 기억장치인 RAM(Random Access Memory)에 저장하는 것을 의미한다. 일반적으로 컴퓨터에서 프로그램이 실행되면 데이터는 디스크나 다른 영구적인 저장장치에 저장된다. 그러나 인메모리 데이터베이스나 캐싱 시스템에서는 데이터를 메모리에 직접 저장함으로써 빠른 읽기와 쓰기 속도를 제공한다.

데이터 구조

Redis는 단순한 키-값 저장소가 아닌, 다양한 데이터 구조를 지원한다.

  • 문자열(Strings): 가장 기본적인 데이터 타입.

  • 해시(Hashes): 필드와 값을 가진 데이터 구조로, 양방향 링크드 리스트이다.

  • 리스트(Lists): 순서가 있는 문자열의 리스트로, 양방향 링크드 리스트이다.

  • 셋(Sets): 유니크한 문자열의 집합으로, 중복이 허용되지 않는다.

  • 정렬된 셋(Sorted Sets): 각 값이 점수와 함께 저장되는 집합으로, 점수를 기준으로 정렬된다.

  • 비트맵(Bitmaps) 및 비트필드(Bitfields): 비트 조작을 위한 데이터 타입.

  • 하이퍼로그로그(HyperLogLog): 매우 작은 메모리 사용으로 대량의 유니크한 요소 수를 추정한다.

영속성

Redis는 데이터 영속성을 지원하여, 데이터를 메모리에만 저장하는 것이 아니라 디스크에 동기화할 수 있다.

  • 스냅샷(Snapshotting, RDB): 특정 간격으로 메모리의 데이터 상태를 디스크에 저장한다.

  • 명령어 로그(Append-Only File, AOF): 모든 쓰기 명령어를 기록하여 재시작 시 재생한다.

복제 및 고가용성

Redis는 복제를 통해 데이터를 여러 서버에 복제할 수 있으며, 마스터-슬레이브 구조를 통해 읽기 성능을 향상시키고, 장애 복구를 할 수 있다. 또한 Redis Sentinel을 통해 자동 페일오버를 지원한다.

클러스터링

Redis 클러스터는 데이터를 여러 노드에 분산하여 저장할 수 있게 하며, 대규모 데이터 세트를 처리하고 고가용성을 제공한다.

사용 사례

1. 캐싱

웹 사이트의 인기 있는 페이지나 자주 요청되는 데이터를 캐시에 저장하여 데이터베이스로의 요청 횟수를 줄인다. 예를 들어, 홈페이지의 최신 게시물 목록이나 제품 카탈로그의 인기 상품 목록 등이 캐싱될 수 있다. 이를 통해 웹 서버의 응답 시간을 향상시키고 데이터베이스의 부하를 줄 일 수 있다.

2. 세션 저장소

웹 애플리케이션에서 사용자의 세션 정보(로그인 상태, 장바구니 내역)를 세션 저장소에 저장하여 빠르게 접근할 수 있다. 이를 통해 각 사용자에 대한 세션 데이터를 효율적으로 관리하고, 세션 유지 및 인증 기능을 구현할 수 있다.

3. 메시지 브로커

실시간으로 이벤트를 전달하거나 메시지를 교환하기 위한 메시지 브로커로 Redis를 사용할 수 있다. 예를 들어, 온라인 게임에서 플레이어 간의 채팅 메시지를 전달하거나, 실시간 주식 시세 업데이터를 구독하는 데 사용될수 있다.

4. 실시간 분석

스트리밍 데이터를 실시간으로 수집하고 처리하여 실시간으로 트렌드를 분석하거나 비즈니스 결정을 내리는 데 사용될 수 있다. 예를 들어, 소셜 미디어에서의 특정 주제에 대한 실시간 트위터 피드를 수집하여 트렌드 분석을 수행하거나, IoT 기기에서 수집된 센서 데이터를 분석하여 실시간으로 환경 모니터링을 수행할 수 있다.

profile
RECORD DEVELOPER

0개의 댓글