Redis 특징
- 실시간 응답
- In-Memory Database
- 디스크 접근 과정이 생략함으로써 빠른 응답 실현
- 단순함
- 키-값 저장소 형태
- 값에는 문자열, 해시, set 등 다양한 데이터 구조 지원
- 레디스는 지원되는 다양한 자료구조를 통해 임피던스 불일치를 손쉽게 해소
- 임피던스 불일치란 RDBMS의 테이블과 프로그래밍 언어간 데이터 구조, 기능 차이로 발생하는 충돌
- Redisson 같은 많은 오픈 소스 클라이언트 사용 가능
- 싱글 스레드 구조(정확히는 메인 스레드 1개, 별도 스레드 3개)
- 클라이언트의 명령을 처리하는 부분은 Event Loop 이용하기에 싱글 스레드로 동작
- 싱글 스레드여서 동시성 이슈에서 자유롭다
- 싱글 스레드이니 레디스 명령어중 반환 시간이 오래걸리는걸 쓰면 전체 병목이 발생하는것 생각!
- 고가용성
- 자체 HA(High Availability)를 제공
- 복제를 통해 여러 서버 분산 기능 제공
- 센티널(Sentinel)은 장애 상황 탐지해 자동으로 fail-over을 시킴
- 애플리케이션이 센티널을 이용해 레디스에 연결하는 구조에서는 마스터에 장애가 발생해도 레디스로의 엔드 포인트 변경할 필요 없이 fail-over가 동작해 정상화된 마스터 노드를 사용 가능
- 확장성
- 레디스의 클러스터 모드 사용한다면 위 그림같이 수평적 확장가능
- 데이터는 클러스터 내에서 자동으로 샤딩 후 저장, 여러 개의 복제본 생성할 수 있음
- 이 샤딩은 레디스 데이터베이스 레이어에서 처리되니 애플리케이션 입장에서는 기존에 레디스를 쓰던대로 쓰면됨
- 클러스터 구조에서 모든 레디스 인스턴스는 클러스터 버스라는 프로토콜 이용해 서로 감시
- -> 이를 이용해 클러스터의 마스터 노드 문제 시 자동으로 fail-over 시켜 고가용성 유지
- 클라우드 네이티브 - 멀티 클라우드
- 클라우드 네이티브란, 클라우드에 특화된 개발 및 운영 방식 의미
- 빠른 배포, 확장성, 높은 복원력 추구
- 레디스는 이런 클라우드 네이티브 환경에서 빠른 데이터 엑세스 및 처리를 지원하기에 MSA와 연계에서 큰 강점 가짐
- 멀티 클라우드란, 여러 클라우드 제공업체 서비스를 동시 혹은 혼합해 쓰는 전략
- 단일 제공 업체 의존성 줄임
- 클라우드 서버의 물리적 위치 지정 가능
- 레디스는 멀티 클라우드 전략에서 여러 클라우드 환경에 걸쳐 일관된 성능과 기능 제공하여 서비스의 연속성, 데이터 일관성 보장
- 클라우드 벤더 별 레디스 상품들
- Amazon ElasticCache for Redis
- Cloud Memory store for Redis
- Azure Cache for Redis
- EazyCache
- Cloud DB for Redis