Redis
오픈 소스 인메모리 데이터 구조 저장소
다양한 데이터 구조 및 크게 String, Set, Sorted Set, Hash, List 등의 데이터 형식을 지원하며 메모리에 데이터를 저장하여 빠른 데이터 액세스를 제공한다.
키-값(key-value) 쌍으로 데이터를 저장하며, 다양한 데이터 유형을 처리할 수 있다.
특징
- 인메모리 데이터 저장: 메모리에 저장하므로 매우 빠른 읽기 및 쓰기 성능 제공, 이는 데이터베이스나 캐시 솔루션으로서 많은 요청과 빠른 응답이 필요한 경우에 유용
- 다양한 데이터 유형 지원: 단순한 문자열, 리스트, 해시, 세트, 정렬된 세트 등 다양한 데이터 유형 지원, 이를 통해 다양한 데이터 구조를 효율적으로 저장하고 처리 가능
- 영속성: 디스크에 데이터를 저장할 수도 있어 서버 재시작 시에도 데이터의 지속성 보장, 이를 위해 스냅샷(snapshot) 및 로그 기반의 지속성 옵션 제공
- 분산 캐싱 및 쿼리: 분산 환경에서 캐싱 기능을 제공하며, 자주 요청되는 데이터를 메모리에 저장하여 데이터베이스나 다른 서비스에 대한 부하를 줄일 수 있다. 또한 Redis는 일부 쿼리를 지원하여 데이터를 조회하고 조작할 수 있다.
- 퍼블리싱/구독 모델: 메시지 기반의 비동기 통신을 제공 이를 통해 여러 클라이언트 간에 실시간 메시지 전달 가능
아키텍쳐
다양한 아키텍쳐를 지원한다.
가장 기본적인 것은 단일 노드 아키텍쳐이며, 데이터를 메모리에 저장하고 디스크에 영속성을 유지한다.
이러한 단일 노드 아키텍쳐를 기반으로 다양한 확장 기능을 제공한다.
- 단일 노드 아키텍처: 메모리에 데이터를 저장하고 디스크에 영속성 유지하며 모든 데이터는 단일 노드의 메모리에 로드되며, 필요에 따라 디스크에 스냅샷을 저장하여 영속성 유지할 수 있다. 이 아키텍처는 단일 서버 환경에서 작동하며, 단일 노드의 처리 능력과 메모리 용량에 의존한다.
- 마스터-슬레이브 레플리케이션: Redis는 마스터-슬레이브 복제를 지원하여 읽기 성능을 향상시킬 수 있다. 마스터 노드는 쓰기 작업을 처리하고, 슬레이브 노드는 마스터 노드의 데이터를 복제하여 읽기 작업에 사용된다. 이를 통해 슬레이브 노드가 읽기 작업을 분담하고, 마스터 노드는 쓰기 작업에 집중할 수 있다. 마스터 노드의 데이터 변경은 슬레이브 노드로 비동기적으로 복제된다.
- 클러스터 모드: Redis는 클러스터 모드를 사용하여 데이터의 분산 저장과 고가용성을 제공한다. 클러스터 모드에서는 여러 마스터-슬레이브 구성으로 데이터를 분산 저장하고, 각 노드는 일부 데이터의 책임을 지닌다. 클러스터 모드에서는 데이터 샤딩(sharding)이 발생하여 데이터를 여러 노드로 분산시킨다. 클러스터 모드는 확장성과 고가용성을 향상시키며, 노드 장애 시에도 서비스의 지속성을 유지할 수 있다.
'👩💻 개발 > 💡SOFTWARE' 카테고리의 다른 글
[Postman] "CSRF Failed: CSRF token missing or incorrect." 해결 (0) | 2022.12.02 |
---|---|
[Postman] Token 값 자동 갱신 (0) | 2022.12.02 |
[ngrok] localhost를 https로 접속하는 방법 (1) | 2022.07.28 |