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?