Basic(기초)
Redis(Remote Dictionary Server)는 In-Memory 데이터 저장소로, 메모리에 데이터를 저장하여 빠른 속도로 데이터를 읽고 쓸 수 있는 데이터베이스이다.
Redis의 주요 특징
In-Memory DB
Redis는 데이터를 메모리에 저장하기 때문에 매우 빠른 데이터 읽기/쓰기 속도를 제공한다. 디스크에 데이터를 저장하는 기존의 관계형 데이터베이스와 달리, Redis는 메모리에서 직접 데이터를 처리하여 낮은 지연 시간과 높은 성능을 제공한다.
장점: 매우 빠른 성능
단점: 기본적으로 메모리 기반이므로 저장 용량에 한계가 존재하며, 장애 발생 시 메모리에 저장된 데이터 유실 가능성 존재
다양한 데이터 구조 지원
Redis는 다양한 자료구조를 지원하여 복잡한 데이터 처리나 특정 문제 해결에 있어 유연하게 사용할 수 있다.
String: 기본적인 키-값 구조
List: Linked List 형태로, 순서가 있는 데이터 처리에 적합
Set: 집합 자료구조로, 중복을 허용하지 않음
Sorted Set: 순서가 있는 집합, 점수를 기준으로 정렬됨
Hash: 필드를 키로 가지는 값의 집합, 객체와 유사한 구조
싱글 스레드 아키텍처
Redis는 메인 스레드 1개와 별도의 3개 스레드로 동작하지만, 클라이언트의 커맨드를 처리는 이벤트 루프를 이용한 싱글 스레드로 동작한다.
장점
하나의 코어만 있어도 Redis 서버가 안정적으로 동작
동기화나 잠금 메커니즘 없이 안정적이고 빠르게 사용자 요청 처리 가능
단점
CPU 자원을 효율적으로 사용하지 못할 가능성이 있음
단일 명령어가 오래 걸리면 다른 요청이 대기할 수 있음
고가용성 & 확장성
Redis는 자체적으로 복제와 클러스터 모드를 제원해 고가용성과 확장성을 제공한다.
복제: 데이터를 여러 서버에 분산해 고가용성을 보장
클러스터 모드: 여러 서버를 클러스터로 구성해 데이터를 샤딩하여 확장성을 보장
Redis 활용
캐싱: 자주 조회되는 데이터를 메모리에 저장하여 성능 향상
예시: 로그인 세션, 상품 목록 등
세션 관리: 분산 서버 간 세션 정보를 중앙에서 관리
예시: 여러 서버 간 세션 일관성 유지
Pub/Sub: 실시간 알림 및 채팅 시스템 구현
예시: 실시간 알림, 채팅 애플리케이션
분산 락: 여러 서버 간 자원 수정 시 데이터 일관성 유지
예시: 자원 동시 수정 방지
TTL: 키에 유효기간 설정하여 자동 삭제
예시: 인증 토큰, 임시 데이터
참고자료
Last updated
Was this helpful?