Redis
- 레디스는 고성능 키-값 저장소로서 문자열, 리스트, 해시, 셋, 정렬된 셋 형식으로 데이터를 지원하는 NoSQL
- 메모리 이외의 영구 저장소를 지원
레디스 데이터 구조
- 문자열 데이터
- 최대 512MB
- 문자열 데이터를 저장할 때는 인코딩된 문자열과 몇 가지 부가 정보가 포함된 구조체 (레디스 객체형)
- 해시 데이터
- 문자열 필드와 값으로 이루어진 맵 구조
- 해시 데이터에는 2^32-1 필드와 값을 저장 할 수 있음
- 숫자로 바꾸면 약 42억
- 셋 데이터
- 중복을 허용하지 않는 집합 형태의 자료구조
- 2^32-1 개의 값을 저장
- 정렬된 셋 데이터
- 셋 데이터와 동일한 특징을 가지면서 요소 정렬이라는 부가적인 특징을 가짐
- 정렬된 셋 데이터는 셋 데이터 구조에 요소의 가중치 값이 추가
- 가중치에 따라서 각 요소의 정렬이 수행
- 기본 정렬 순서는 오름차순
- 리스트 데이터
- 리스트 데이터는 저장 순서를 기억하는 데이터 구조로 중복 허용
- 2^32-1 개의 값을 저장
- 이중 연결 리스트 구현
확장과 분산 기법
- 복재
- 단일복제
- 마스터, 단일 슬레이브 구조
- 마스터 노드에 변경이 발생하면 실시간으로 슬레이브 노드에 데이터 변경상항을 기록
- 다중복제
- 다중 복제는 단일 복제의 단순 확장
- 계층형복제
- 마스터 노드에 너무 많은 슬레이브가 접속되어 쓰기 성능이 저하되는 문제를 해결하기 위한 복제 방법
- 마스터 노드와 슬레이브 노브 1이 1차로 복제
- 이후 슬레이브 2, 슬레이브 3, 슬레이브 4가 복제
- 단일복제
- 샤딩
- 수직 샤딩
- 데이터 성격을 기준으로 논리적 분할을 적용한 것
- 사용자정보, 친구정보로 분리
- 범위 지정 샤딩
- 특정 키에 대하여 범위를 지정하여 저장될 노드를 결정하는것
- 1~10,000 샤드1, 10,001 ~ 20,000 샤드 2
- 해시 기반 샤딩
- 키의 해시값을 구하여 해시값에 대한 특정 연산을 통해서 키가 저장될 위치를 구하는 방법
- 수직 샤딩
- 샤딩과 복제 혼합
- 두개의 샤드로 구성된 클러스터이며 각 샤드는 단일 복제를 사용