Redis

[Redis] 사용하는이유

MIN우 2022. 12. 23. 12:06
728x90

이번 토이 프로젝트에서 Redis를 도입해보기전에 Redis가 무엇인지 학습하고 내용을 정리해보겠습니다.

 

Redis(Remote Dictonaryt Server)란 ?

 

in-memmory 형태의 No-SQL로써 Key-Value 쌍의 해쉬 맵 형태의 데이터베이스입니다.

 

Remote Dictionary Server

 

in-memory: disk가 아닌 memory에 저장하기 때문에 disk I/O 작업이 발생하지 않아 속도가 빠르며, 휘발성입니다.

No-SQL: Not Only SQL를 뜻하며 RDBMS에 비해 속도가 빠른 장점이 있습니다.

 

 

No-SQL종류: Redis,Cassandra,HBase,MongoDB,Firebase 실시간데이터베이스 

 

 

Redis 특징

1. 다양한 데이터 구조

Redis는 String 외에도 Set, Sorted Set, Hash, List 등 다양한 타입을 지원합니다.
애플리케이션에서 위에 적힌 다양한 데이터 타입을 활용할 수 있습니다.
예를 들어 Redis Sorted Set을 활용하여 순위 별로 정렬된 플레이어 목록을 유지하는 게임 리더보드를 쉽게 구현할 수 있습니다.

2. 스냅샷

Redis를 사용하면 특정 시점에 데이터를 디스크에 저장하여 보관할 수 있고, 장애 상황 시에 복구에 사용할 수 있습니다.

3. 복제

Redis를 사용하면 Master - Slave 구조로 여러 개의 복제본을 만들 수 있습니다.
이를 통해 데이터베이스 읽기를 확장하고 높은 가용성(오랜 시간 고장 나지 않는) 클러스트를 가질 수 있습니다.

4. 트랜잭션

Redis는 명령 그룹을 격리된 원자적 작업으로 실행할 수 있는 트랜잭션을 지원합니다.

5. Pub / Sub Messaging

Pub(발행) / Sub(구독) 방식의 메시징을 지원합니다.
따라서 고성능 채팅방, 실시간 댓글 스트림, 소셜 미디어 피드 및 서버 상호 통신에 사용할 수 있습니다.

6. 루아 스크립트 지원

매우 경량화된 절차 스크립트 언어인 루아를 지원합니다.
스크립트를 통해 성능을 높이고 응용 프로그램을 단순화하는 데 도움이 될 수 있습니다.

7. 위치기반 데이터 타입 지원

Redis에는 대규모 실시간 위치기반 데이터 작업을 지원합니다.
따라서, 두 위치의 거리를 찾거나, 사이에 있는 요소 찾기 등의 작업을 수행할 수 있습니다.
이를 활용하여 맛집, 길 찾기, 지도기반의 고성능 서비스를 제공할 수 있습니다.

 

 

Redis를 사용하는 경우

 

  • 보다 광범위한 데이터 구조 및 스트림 처리 기능에 대한 액세스가 필요합니다.
  • 키와 값을 제자리에서 수정하고 변경할 수 있는 기능이 필요합니다.
  • 사용자 지정 데이터 제거 정책이 필요합니다. (예: 시스템의 메모리가 부족하더라도 키를 더 긴 TTL로 유지해야 함)
  • 백업 및 웜 재시작을 위해 데이터를 디스크에 유지해야 합니다.
  • 복제본 및 클러스터링을 통해 애플리케이션의 높은 가용성 또는 확장성을 확보해야 합니
728x90