1. 인메모리 데이터베이스
Redis는 모든 데이터를 메모리에 저장하며, 디스크에는 데이터를 복제하여 **퍼시스턴스(내구성)**를 보장합니다. 메모리 기반이기 때문에 데이터를 매우 빠르게 읽고 쓸 수 있으며,
예를 들어, 웹 애플리케이션에서 사용자 세션 정보를 Redis에 저장하면 빠른 응답 시간이 보장된다.
2. 단일 스레드 처리
Redis는 기본적으로 단일 스레드로 동작하며, 이는 복잡한 동시성 제어가 필요 없도록 설계되어 있으며, 동시에 처리해야 할 작업들을 빠르게 처리하며, 이 구조 덕분에 Redis는 다중 쓰레드에서 발생할 수 있는 경합 상태나 교착 상태가 없고, 작업의 순차성이 보장된다.
예시:
웹 애플리케이션에서 많은 요청을 받는 상황에서, Redis는 순차적으로 각 요청을 처리하여 병목 현상이 거의 발생하지 않도록 하며, 요청 처리의 지연 없이 높은 처리량을 유지할 수 있는 것이 특징이다.
3. 비동기 I/O 처리
Redis는 클라이언트와 서버 간의 데이터 교환을 비동기적으로 처리하며, 이는 파일 입출력과 네트워크 소켓을 비동기적으로 처리하여 성능을 높이는 방식이며, 예를 들어, 클라이언트가 데이터를 요청할 때, Redis 서버는 다른 요청을 기다리지 않고 바로 응답할 수 있다.
4. 복제(Replication)
Redis는 마스터-슬레이브 구조로 복제를 지원하며, 하나의 마스터 노드에서 데이터를 처리하고, 슬레이브 노드는 데이터를 읽기 전용으로 복제하여 다른 서버에서 읽기 요청을 처리할 수 있으며, 이를 통해 읽기 처리량을 높이고 데이터 내구성을 보장한다.
예시:
마스터 노드에서 데이터를 변경하면, 슬레이브 노드로 복제하여 읽기 요청은 슬레이브 노드가 처리함으로써 성능을 최적화한다.
5. 클러스터링(Clustering)
클러스터링은 데이터를 여러 Redis 인스턴스에 분산 저장하여 대규모 데이터 처리와 확장성을 제공합니다. **샤딩(sharding)**을 통해 데이터를 분할하여 여러 노드에 저장하고, 각 노드는 특정 범위의 데이터를 담당한다.
예시:
대규모 웹사이트에서 전 세계의 사용자 데이터를 처리할 때, 클러스터를 구성하면 특정 지역 사용자들의 데이터를 해당 지역의 노드에서 처리함으로써 성능을 개선할 수 있다.
6. 퍼시스턴스(Persistence)
Redis는 **RDB(Snapshot)**와 AOF(Append Only File) 두 가지 방식으로 데이터를 디스크에 저장하여, 시스템 재 시작이나 장애 발생 시에도 데이터 복구가 가능하다.
- RDB: 일정 시간마다 메모리 데이터를 스냅샷으로 디스크에 저장하는 방식.
- AOF: 모든 쓰기 작업을 로그 형태로 기록하여, 재시작 시 로그를 재실행해 데이터를 복구하는 방식.
이 아키텍처 덕분에 Redis는 빠른 성능과 동시에 데이터 내구성을 보장할 수 있다.
'Server > Redis' 카테고리의 다른 글
Redis data types (0) | 2024.09.10 |
---|