Redis(Remote Dictionary Storage)
- 디스크가 아닌 메모리 기반의 data 저장소 -> 휘발성
- single thread : 단일 cpu
- 초당 5만 ~ 25만 reqeust 실행 가능
- key-value 형식으로 데이터 저장
장점:
- hardware 차이에서 오는 기본적인 퍼포먼스 성능
Redis는 메모리 기반의 저장소로 데이터에 접근하는 속도가 빠르다. 하드웨어 성능의 차이로 인해 기본적인 성능 차이를 극복할 수 있는 장점 제공.
- 다양한 type의 아키텍처 지원
문자열(String), 해시(Hash), 리스트(List), 집합(Set), 정렬된 집합(Sorted Set) 등의 데이터 구조를 활용할 수 있다. 다양한 용도에 맞게 데이터를 저장하고 활용할 수 있는 유연성을 제공.
- partitioning
데이터를 분할(partitioning)하여 여러 개의 서버에 분산하여 저장하고 처리할 수 있다.
- popular
Redis는 인기 있는 데이터베이스 솔루션으로 널리 사용되고 있다.
단점:
- 휘발성
Redis는 메모리 기반의 저장소로 데이터를 저장할 때 휘발성이기 때문에, 서버가 종료되거나 재시작되면 데이터가 모두 손된다.. 따라서 영속성(persistence)이 필요한 경우에는 별도의 설정이 필요하다.
- single thread
단일 스레드 환경에서 동작하기 때문에, 다중 처리나 동시성이 요구되는 작업에는 적합하지 않을 수 있다. 여러 개의 CPU 코어를 활용하여 병렬 처리를 할 수 없는 한계가 있다.
- memory fragmentation
데이터를 메모리에 저장하기 때문에, 메모리 단편화(memory fragmentation) 문제가 발생할 수 있다. 데이터의 크기가 자주 변하는 경우에는 메모리를 효율적으로 관리하는 것이 중요.
- big size에 대해 적합하지 않음
목적:
cashing: 실제 원본에 가지 않아도 빠르게 접근할 수 있도록 임시적으로 저장해놓기
캐싱은 실제 원본에 접근하지 않고도 미리 계산된 데이터나 자주 사용되는 데이터를 임시적으로 저장함으로써, 데이터에 빠르게 접근할 수 있도록 한다.
구조
- Standalone(독립형): Redis는 단일 서버에서 독립적으로 동작할 수 있다. 이 경우 단일 인스턴스로 데이터를 관리하며, 주로 개발 또는 테스트 환경에서 사용된다.
- Master-Replica(마스터-레플리카): Redis는 마스터-레플리카 구조로 데이터를 관리할 수 있다. 마스터는 쓰기 작업을 처리하고, 레플리카는 마스터로부터 데이터를 복제하여 읽기 작업을 처리한다. 이를 통해 데이터의 가용성과 안정성을 높일 수 있다.
- Sentinel(센티넬): Redis Sentinel은 Redis 인스턴스의 고가용성(High Availability)을 제공하기 위해 사용된다. 센티넬은 마스터-레플리카 구조에서 마스터 서버의 상태를 모니터링하고, 필요에 따라 자동으로 장애 복구를 수행한다.
- Cluster(클러스터): Redis 클러스터는 여러 개의 서버에 데이터를 분산하여 저장하고 처리하는 분산 환경을 구성할 수 있다. 클러스터 구조를 사용하면 데이터의 확장성과 처리 성능을 높일 수 있다.
'Programming > Redis, Kafka' 카테고리의 다른 글
카프카 Kafka 콘솔에서 사용하기 (0) | 2023.06.02 |
---|---|
ubuntu 환경에서 redis, master-slave, sentinel 설치 (0) | 2023.05.31 |
이커머스에서 redis, kafka usecase (0) | 2023.05.31 |
카프카 kafka 토픽 + producer + consumer 예제 코드 (0) | 2023.05.30 |
맥 homebrew 를 통해 설치한 kafka 실행하기 (0) | 2023.05.30 |