Redis?
Redis(Remote Dictionary Server)는 오픈 소스 기반 인 메모리 데이터 저장소이다.
데이터를 key-value 형식으로 저장하고 strings, hashes, lists, sets, and sorted sets와 같은 다양한 데이터 구조를 지원한다. 또한 데이터 노드의 Master-Slave 복제, Lua 스크립팅, 키 만료 등 다양한 고급기능을 사용할 수 있다.
Redis는 인 메모리 기반 데이터 저장소로 사용되지만 RDB(특정 시점 스냅샷), AOF(쓰기 작업 로그) 방식의 백업을 통해 데이터를 디스크에 저장할 수 있다. 따라서 재부팅이나 충돌이 발생해도 데이터를 보존시켜 계속 사용할 수 있다.
Redis는 고성능, 확장성 및 low latency로 유명하므로 실시간 분석, 고속 트랜잭션 및 메모리 내 캐싱과 같은 사용 사례에 적합하다. 또한 Redis에는 구독-게시 메커니즘이 내장되어 있어 메시지 브로커로 널리 사용되고 있다.
따라서 다양한 프로그래밍 언어와 프레임워크에서 지원되며 게임, 소셜 미디어, 전자 상거래 등과 같은 다양한 유형의 애플리케이션에서 사용된다.
AWS - ElastiCache for Redis?
Amazon Web Services(AWS) ElastiCache for Redis는 클라우드 환경에서 오픈 소스인 Redis를 쉽게 배포, 운영 및 확장할 수 있는 다양한 기능을 제공하는 캐시 서비스이다.
Redis 클러스터 모드를 사용하면 여러 노드 그룹(샤드)을 가지는 클러스터를 생성하여 향상된 성능과 확장성을 제공한다. 이를 통해 실시간 데이터 처리, 고성능 캐싱 및 높은 처리량 데이터 수집과 같은 까다로운 사용 사례에 Redis를 사용할 수 있다.
노드
노드는 데이터를 저장하고 읽기 및 쓰기 작업을 처리하는 Redis 서비스의 단일 인스턴스를 나타낸다. 즉, 가장 작은 단위의 데이터 저장소이다.
보통 노드를 복제하여 Master 노드와 Slave 노드로 구성한다. Master 노드는 읽기/쓰기 작업을 처리하고 Slave 노드는 마스터 노드에서 데이터를 복제하여 읽기 작업에서 사용하여 성능을 향상 시킨다.
샤드
AWS Redis에서 샤드는 Redis 클러스터에 저장된 데이터의 파티션을 나타낸다. 즉, 데이터를 분리시켜 저장하는 노드그룹을 뜻하며 각 샤드는 Redis의 별도 인스턴스이다.
이렇게 여러개의 샤드로 데이터를 분리시키면 싱글 스레드 기반의 레디스에서 가용성을 더 확보할 수 있으며 높은 요청 속도를 처리할 수 있다. 또한 하나의 샤드에서 문제가 생겨도 해당 샤드에 속하지 않은 데이터는 계속해서 사용할 수 있다.
Redis 클러스터에서 샤딩은 클러스터에 의해 자동으로 처리되므로 데이터를 수동으로 분할하거나 클러스터 전체에 분산하는 방법에 대해 걱정할 필요가 없다. 일관된 해싱 알고리즘을 사용하여 키를 저장할 샤드를 결정하므로 키가 클러스터 전체에 고르게 분산된다.
요약하면 각 샤드는 Redis 클러스터에 저장된 데이터의 하위 집합이며 클러스터가 수평으로 확장되고 더 많은 데이터와 더 높은 요청 속도를 처리할 수 있도록 한다.
클러스터
레디스 클러스터는 인 메모리 데이터 저장소의 분산 환경을 구축할 수 있도록 해주는 기능이다.
이를 이용하면 여러 노드들로 구성된 레디스 클러스터를 구축할 수 있어 더 높은 성능과 확장성을 제공할 수 있으며 이를 이용하면 실시간 데이터 처리, 고성능 캐싱, 및 높은 처리량 데이터 수집 등 다양한 용도로 사용할 수 있다.
참고
https://docs.aws.amazon.com/ko_kr/AmazonElastiCache/latest/red-ug/WhatIs.Terms.html
'server > 🟥Redis' 카테고리의 다른 글
Redis와 Spring Scheduler를 사용해서 사이트 일일 방문자 저장하기 (2) | 2023.02.03 |
---|---|
AWS[Elasti Cache] - Redis 생성 및 Ec2에서 접속 (0) | 2023.01.12 |
댓글