Redis 개요

개요

Redis는 Remote Dictionary Server를 뜻한다. Redis는 대표적인 In-Memory data store 솔루션 중 하나로 꼽히는데, 특히 Memcached와 종종 비교되곤 한다. 그러나, Redis는 Memcached와는 달리 다양한 데이터 타입을 지원하여 보다 다양한 분야의 요구사항을 충족시키고 있다. Redis는 분산 Key-Value Store, 캐시서버, 메시지 브로커 등으로도 활용되기도 한다.

 

Redis 지원 Data Type들

Redis에서 주로 쓰이는 데이터 형은 String, List, Set, ZSet(Sorted Set), Hash가 있다.

 

String

  • 문자열, 정수, 소수를 저장한다.
  • 문자열 전체 혹은 부분을 다룬다.
  • 정수와 소수를 증감한다.

 

List

  • String의 리스트
  • 리스트의 앞뒤로 각각 push하거나 pop을 한다.
  • 개별 혹은 여러 개의 아이템을 읽을 수 있다.
  • 특정 아이템(들)을 찾거나 삭제할 수 있다.

 

Set

  • 중복을 제외한 값을 저장한다.
  • 정렬하지는 않는다.
  • Set에 아이템을 추가/삭제/조회 등을 수행할 수 있다.

 

ZSet(Sorted Set)

  • String으로 표현되는 데이터를 실수로 표현되는 스코어와 매핑한다.
  • 스코어 기반으로 정렬된다.
  • 값(value)을 추가/조회/삭제할 수 있다.
  • score 범위 또는 값을 기반으로 데이터 조회 가능하다.

 

Hash

  • Key-Value 기반의 정렬되지 않은 해시테이블이다.
  • 데이터를 추가/조회/삭제 할 수 있다.

 

데이터 저장/ 복구 기능

단지 휘발성 캐시서버로서만 동작하는 경우를 넘어, Redis가 들고 있는 데이터에 대한 안정성을 높여주기 위해 Snapshot을 사용하는 방법과 Journaling을 사용하는 방법 두 가지 방법이 제공된다.

 

Persist by RDB: Snapshot

메모리의 정보를 Redis RDB Dump 포맷에 맞춰 주기적으로 디스크로 비동기식 스냅샷을 뜨는 방법이다.

 

Persist by AOF(Append-Only File): Journaling

마치 일기를 쓰듯이, 매 레코드의 수정 내역을 append-only file에 백그라운드 프로세스로 기록하는 방법이다. 마치 MySQL에서의 binlog와 유사하다.

 

데이터 복제/분산 - replication/ sharding

처리하는 데이터량이 많아지면, 어떻게 scale out을 할까? Redis에서의 replication과 sharding은 다음과 같다.

 

Replication

미러링으로도 불리듯이 모든 데이터를 복제하는 방법이다. 여러 노드에 모든 값이 복제가 되어 있으므로, 특히 읽기의 HA(고가용성)을 확보하는데 목적이 있다. 읽기 요청들이 replica들로 분산되기 때문에 읽기 자체의 부하를 잘 대응할 수 있다. 그러나, 한 개의 마스터가 여러 개의 슬레이브로 복사되어야 한다는 점과 모든 replica들이 동일한 데이터를 모두 들고 있게 된다는 특징 때문에 쓰기 관점에서는 확장성이 좋아진다 보기 어렵다.

 

Sharding (partitioning)

데이터를 어떤 키를 기준으로 나누는 방법이다. 범위 또는 해쉬를 기준으로 파티셔닝을 하기 떄문에, 쓰는 데이터의 양 자체를 나눠갖게 된다. 즉, 쓰는 데이터의 양이 늘어나더라도 확장성을 좋게 가질 수 있다. 책임져야할 노드의 역할이 분리가 되어 있으므로, 캐시 히트나 메모리 사용량 등이 분산된다.

'Development > Hadoop, NoSQL, BigData' 카테고리의 다른 글

Redis 자료 구조 - Set  (0) 2021.05.12
Redis 자료 구조 - List  (0) 2021.05.10
Redis 자료 구조 - String  (0) 2021.05.06
Memcached vs. Redis - 특징 비교  (0) 2021.05.03
Avro 개요  (0) 2021.04.23
Redis 설치 방법 세 가지  (0) 2021.04.21
Docker기반 Spark Cluster 설치하기  (6) 2020.12.15
Local AirFlow 설치하기  (0) 2020.12.09

댓글

Designed by JB FACTORY