Redis

[Redis] redis에 대해

누구세연 2024. 4. 28. 17:54

redis란?

Redis는 데이터를 저장하는 서버입니다.

이 서버는 데이터를 저장할 때 간단한 key-value 형태로 저장합니다. 그래서 이 값을 꺼내 쓸 때는 키를 이용해서 꺼내 쓰는 것입니다.

 

주로 세션 정보, 캐싱, 랭킹, 메시지 브로커 등 다양한 용도로 사용하고 있습니다. 데이터를 다루는 기능도 다양해서 문자열, 숫자, 리스트, 해시맵 등 저장하고 다룰 수 있습니다. 그래서 데이터를 빠르고 다양하게 꺼내쓸 수 있습니다.

 

 

redis 특징

  1. 높은 성능과 속도
    Redis는 메모리 기반의 데이터 저장소로서 매우 빠른 응답 속도를 제공합니다.
    이는 데이터를 디스크에 저장하는 대신 메모리에 저장하여 빠른 데이터 액세스를 가능하게 합니다.
  2. 다양한 데이터 구조 지원
    Redis는 단순한 key-value 형태 뿐만 아니라 문자열, 리스트, 해시맵, 집합 등 다양한 데이터 구조를 지원합니다.
    이는 다양한 형태의 데이터를 저장하고 처리할 수 있도록 합니다.
  3. 높은 확장성
    Redis는 클러스터링을 통해 높은 확장성을 제공합니다.
    이는 데이터의 양이나 요청량이 증가해도 시스템을 쉽게 확장할 수 있음을 의미합니다.
  4. 내구성을 위한 영속성 기능
    Redis는 데이터를 메모리에 저장하지만, 필요에 따라 디스크에도 저장할 수 있습니다.
    이를 통해 데이터 손실을 방지하고 시스템의 내구성을 높일 수 있습니다.

 

redis 장점

  1. 빠른 속도와 응답성
    Redis는 메모리 기반의 데이터 저장소로서 매우 빠른 속도와 높은 응답성을 제공합니다.
    이는 웹 애플리케이션에서 빠른 데이터 액세스와 처리를 가능하게 합니다.
  2. 다양한 데이터 구조
    Redis는 다양한 데이터 구조 지원은 데이터를 보다 유연하게 저장하고 처리할 수 있도록 합니다.
    이는 다양한 형태의 애플리케이션에서 활용할 수 있는 장점이 됩니다.
  3. 높은 확장성
    Redis의 클러스터링 기능은 시스템을 쉽게 확장할 수 있도록 합니다.
    이는 시스템이 증가하는 데이터 양이나 요청량에 대응하기 쉽도록 해줍니다.

 

redis 단점

  1. 메모리 제약
    Redis는 메모리 기반의 데이터 저장소이기 때문에 메모리 제약이 있을 수 있습니다.
    매우 큰 데이터를 메모리가 부족한 환경에서는 사용에 제한이 있을 수 있습니다.
  2. 영속성 기능의 성능 저하
    데이터를 디스크에 저장하는 영속성 기능을 사용할 경우 속도가 저하될 수 있습니다.
    이는 메모리와 디스크 간의 데이터 동기화 과정에서 발생할 수 있는 성능 저하로 이어질 수 있습니다.

 

redis의 Pub/Sub

redis는 Publish-Subscribe(발행-구독) 모델을 지원합니다.
이 모델은 메시지 브로커 시스템에서 주로 사용되며, Publisher(발행자)가 메시지를 발행하고, 이를 관심 있는 Subscriber(구독자)가 구독하여 메시지를 수신하는 방식으로 동작합니다.

 

Pub/Sub은 다음과 같은 특징을 갖습니다.

  1. 비동기 통신
    발행자와 구독자간의 통신은 비동기적으로 이루어집니다.
    즉, 발행자가 메시지를 보낸 후 바로 처리하지 않고, 구독자가 메시지를 받을 때까지 대기하지 않습니다.
  2. 다중 구독
    하나의 발행자가 여러 개의 채널에 메시지를 발행할 수 있고, 각 채널에 여러 구독자가 구독할 수 있습니다.
  3. 이벤트 기반 아키텍처
    Pub/Sub은 이벤트 기반 아키텍처에서 유용하게 사용됩니다.
    예를 들어, 실시간 알림, 채팅, 실시간 데이터 처리 등에 활용됩니다.
  4. 확장성
    Redis의 Pub/Sub은 클러스터링을 통해 확장이 가능하며, 대규모 시스템에서도 안정적으로 동작할 수 있습니다.

Pub/Sub의 주요 용어는 다음과 같습니다.

  • Publisher(발행자): 메시지를 발행하는 클라이언트 또는 애플리케이션입니다.
  • Subscriber(구독자): 특정 채널에 구독하여 메시지를 수신하는 클라이언트 또는 애플리케이션입니다.
  • Channel(채널): 메시지를 발행하고 구독하는 데 사용되는 특정 주제 또는 주제 영역입니다.

Pub/Sub 기능을 사용하면 느슨하게 결합된 컴포넌트 간에 실시간으로 데이터를 전달하고 처리할 수 있어서 실시간 애플리케이션 개발에 매우 유용합니다.

 

redis 사례

  1. 세션 캐싱
    웹 애플리케이션에서 사용자 세션 정보를 메모리에 저장하여 빠르게 접근할 수 있도록 합니다.
    이를 통해 사용자 경험을 향상시킬 수 있습니다.
  2. 캐싱
    Redis는 메모리 기반의 데이터 저장소로서 캐싱에 매우 적합합니다.
    데이터 베이스나 다른 소스에서 가져온 데이터를 Redis에 캐싱하여 다음 요청에 더 빠르게 접근할 수 있습니다.
  3. 메시지 브로커
    Redis의 Pub/Sub 기능을 사용하여 메시지 브로커로 활용할 수 있습니다.
    이를 통해 이벤트 기반 아키텍처나 실시간 알림 기능을 구현할 수 있습니다.
  4. 세션 스토어
    Redis는 분산 환경에서도 빠르게 동작하므로 세션 관리에 이상적입니다.
    여러 서버 간에 세션 정보를 공유하거나 분산 시스템에서 세션을 관리할 때 사용됩니다.
  5. 인메모리 데이터베이스
    Redis는 메모리에 데이터를 저장하고 디스크에는 필요한 경우만 저장하여 높은 성능을 제공합니다.
    따라서 작은 규모의 데이터 베이스로 사용되기도 합니다.