Redis Cluster의 아키텍처는 몇 가지 주요 방법으로 메모리 효율에 영향을 줄 수 있습니다.
1. 분산 데이터 저장 :
- Redis 클러스터에서 데이터는 여러 노드에 배포됩니다.
-이 분산 스토리지 모델은 단일 노드보다 메모리 효율적 일 수 있습니다. 각 노드는 총 데이터의 일부만 저장하면됩니다.
- 그러나 클러스터 메타 데이터를 유지 관리하는 오버 헤드와 노드 간의 연결은 이러한 메모리 절약 중 일부를 상쇄 할 수 있습니다.
2. 복제 및 중복성 :
- Redis Cluster는 복제를 사용합니다. 여기서 각 샤드에는 1 차 마스터 노드와 하나 이상의 복제 노드가 있습니다.
-이 중복성은 동일한 데이터가 여러 노드에 저장되므로 총 메모리 발자국을 증가시킬 수 있습니다.
- 그러나 복제는 고 가용성과 결함 공차를 제공하며, 이는 많은 사용 사례에 유용 할 수 있습니다.
3. 슬롯 할당 및 키 공간 부서 :
-Redis 클러스터는 키 공간을 16,384 해시 슬롯으로 나누며 마스터 노드에 분산됩니다.
-이 슬롯 기반 파티션은 클러스터 메타 데이터가 슬롯 할당을 추적해야하므로 일부 메모리 오버 헤드를 소개 할 수 있습니다.
그러나 키를 슬롯에 매핑하는 데 사용되는 일관된 해싱 알고리즘은 일반적으로 효율적입니다.
4. 클라이언트 측 캐싱 :
-Redis 클러스터 클라이언트는 클러스터 토폴로지 및 슬롯 할당을 알고 있어야합니다.
- 클라이언트 측 에서이 정보를 캐싱하면 모든 요청에 대한 슬롯 정보에 대한 클러스터 쿼리의 오버 헤드를 줄일 수 있습니다.
5. 조각화 및 메모리 할당 :
- Redis 클러스터의 분산 특성은 메모리가 여러 노드에 할당되므로 메모리 조각화가 증가 할 수 있습니다.
- 이는 전체 메모리 효율, 특히 데이터가 높은 수준의 워크로드의 경우 영향을 줄 수 있습니다.
전반적으로, Redis Cluster의 아키텍처가 메모리 효율에 미치는 영향은 특정 워크로드 및 사용 패턴에 달려 있습니다. 대부분의 경우, Redis 클러스터가 제공하는 확장 성, 고 가용성 및 결함 공차의 이점은 잠재적 메모리 오버 헤드를 능가합니다. Redis 클러스터 배포에서 자원을 효율적으로 활용하기 위해서는 메모리 사용의 신중한 모니터링 및 최적화가 권장됩니다.
인용 :[1] https://softwareengineering.stackexchange.com/questions/425108/what-performance-benefits-a-redis-cluster-have-having-all-machines-con
[2] https://codedamn.com/news/backend/mastering-redis-clustering-guide
[3] https://docs.vultr.com/understanding-redis-high-avavelability-architectures
[4] https://semaphoreci.com/blog/redis-achitectures
[5] https://scalegrid.io/blog/intro-to-redis-sharding/