Basic(기초)
Redis(Remote Dictionary Server)는 'Key-Value' 기반의 In-Memory 데이터 저장소로, 디스크 기반 데이터베이스보다 빠른 읽기/쓰기 속도를 제공하는 것이 가장 큰 특징이다.
Redis의 주요 특징
In-Memory DB
Redis는 모든 데이터를 메모리에 저장하고 처리하여 낮은 지연 시간(Latency)과 높은 처리량(Throughput)을 달성한다.
단점
메모리는 휘발성이므로, 서버 장애나 전원 공급 중단 시 데이터가 유실될 위험이 존재
물리적 메모리 크기에 따라 저장할 수 있는 데이터의 총량의 제한
영속성(Persistence) 보완: 데이터 유실 위험을 보완하기 위해 디스크에 데이터를 저장하는 영속성 기능 제공
RDB(Redis Database): 특정 시점의 데이터 전체를 디스크에 스냅샷 형태로 저장하는 방식
AOF(Append Only File): 모든 쓰기/수정 명령을 로그 파일에 순차적으로 기록하는 방식
다양한 데이터 구조 지원
애플리케이션 개발에 유용한 여러 자료구조를 지원하여 복잡한 요구사항을 쉽게 해결하도록 돕는다.
String: 가장 일반적인 데이터 형태로, 문자열, 숫자, 바이너리 데이터를 저장
List: Array와 유사한 자료구조로, 데이터의 순서가 보장되며 중복을 허용
Set: 순서가 없고, 데이터의 중복을 허용하지 않는 집합
Sorted Set: Set에 점수(score)를 더하여, 점수를 기준으로 정렬된 상태를 유지하는 집합
Hash: 하나의 키 아래에 여러 필드(field)와 값(value) 쌍을 저장하는 구조
싱글 스레드 아키텍처
Redis의 핵심적인 특징으로, 클라이언트의 명령(Command)을 처리하는 부분은 단일 스레드로 동작한다.
장점
단일 스레드로 동작하여 데이터에 대한 원자적(Atomic) 연산 보장
스레드 간 경쟁(Race Condition)이 발생하지 않아 복잡한 동기화 메커니즘이 필요 없음
단점
하나의 명령만 처리할 수 있어, 처리 시간이 긴 명령(예:
KEYS
,FLUSHALL
)이 실행되면 다른 모든 요청의 처리가 지연
Redis 6.0부터는 네트워크 I/O 처리에 멀티 스레드를 도입하여, 다중 클라이언트의 요청/응답 처리 효율을 높였다.(실제 데이터 접근/연산은 싱글 스레드로 동작)
고가용성 & 확장성
데이터 복제, Sentinel, Cluster 기능을 통해 서비스 안정성과 데이터 처리 용량 확장을 지원한다.
Replication(복제): Master 노드의 데이터를 여러 Slave 노드에 실시간으로 복제하는 기능
Sentinel(센티널): Master-Slave 구조의 고가용성을 자동으로 관리하는 시스템
Cluster(클러스터): 데이터를 여러 노드에 자동으로 분산 저장(Sharding)하여 하나의 거대한 데이터베이스처럼 사용하는 기능
Redis 활용
캐싱 (Caching)
자주 조회되지만 변경은 적은 데이터를 메모리에 저장하여 DB 부하를 줄이고 응답 속도를 향상시킴
로그인 세션, 상품 목록
세션 관리 (Session Management)
분산 서버 간 세션 정보를 중앙에서 관리하여 일관성을 유지함
여러 서버 간 세션 공유
메시지 큐 (Message Queue)
List 구조의 LPUSH
, RPOP
명령으로 간단한 메시지 큐를 구현하여 비동기 작업 처리에 활용
실시간 알림, 채팅 애플리케이션
분산 락 (Distributed Lock)
SETNX
명령을 활용해 여러 서버 환경에서 공유 자원에 대한 동시 접근을 제어
자원 동시 수정 방지
참고자료
Last updated
Was this helpful?