일반적인 Text문자열, binary saft String으로 이미지, 숫자 등 다양한 형식도 사용가능함.
일반적인 배열로 생각할 수 있다.
Queue 또는 Stack으로 사용하기 적절함.
Blocking 기능을 이용해 Event Queue로 활용 가능하다.
Hash는 하나의 Key안에 다시 여러개의 field와 value 쌍으로 구성
중복되지 않는 집합의 형태
Set과 동일하나, score
라는 필드를 기준으로 정렬된 상태를 유지한다.
score
값이 동일하다면, 사전순 정렬
대용량의 데이터를 다룰 때 사용, 중복되지 않는 값의 개수를 카운트 하기에 적합
set과 유사하지만, HyperLogLogs는 12kb로 고정하여 저장하며
저장된 데이터를 다시 불러올 수 없다.
로그를 저장하기에 적합함.
append-only
데이터 저장공간을 절약가능.
예를 들어, 특정일에 출석체크 한 유저의 수를 조회하고자 한다고 생각해보자.
출석체크한 유저의 index에 bit를 1로 변경하고
BITCOUNT 연산을 수행하면, 확인 가능하다.
단, 데이터를 정수로 표현할 수 있어야 함.
단일 Redis 서버.
서버 다운 시, AOF 또는 Snapshot 파일을 이용해 재시작.
단순한 복제 연결 상태.
Slave가 단순 복제된 상태로 마스터의 데이터를 실시간으로 전달받아 보관.
마스터 다운 시, 슬레이브 서버를 이용해 서비스를 계속한다.
HA기능이 없으므로 장새 발생 시, 수동으로 복구 해야 함.
이중화 + 센티널, 무중단 서비스 가능
Sentinel 노드가 다른 노드를 감시하는 구조이다.
마스터가 비정상 상태일 때 자동으로 Fail Over 된다.
연결 정보의 변경이 필요 없다.
Sentinel 노드는 3대 이상의 홀수로 존재해야하며, 과반수 이상의 Sentinal이 동의해야 Fail Over가 진행된다.
Fail Over
: Redis 서버에서 장애가 발생했을 때, 다른 서버가 그 역할을 대신 수행하도록 하는 메커니즘을 말한다!
HA, 무중단 서비스 가능
키를 여러 노드에 자동으로 분할(샤딩)
샤딩 : 데이터를 여러 개의 DB에 분할하여 저장하는 방법
모든 노드가 서로를 감시하고, 마스터 비정상 상태일 때, 자동 Fail Over
최소 3대의 마스터 노드가 필요하다.
를 고려하여 적절한 아키텍처를 사용하자..!