Redis

hznnoy·2025년 10월 12일

CS

목록 보기
18/24

Redis(Remote Dictionary Server)

고성능의 인메모리 데이터 구조 저장소

디스크 기반 DB와는 달리 모든 데이터를 메인 메모리(RAM)에 저장해 매우 빠른 읽기/쓰기 속도를 제공하며, 주로 캐싱, 세션 관리, 메시지 브로커 등으로 활용되는 NoSQL 시스템이다.

특징

인메모리

  • 초고속 성능: 데이터를 메모리에 저장하고 처리하기 때문에 디스크 I/O가 발생하지 않아 1밀리초(ms) 미만의 응답 시간을 달성할 수 있다
  • 휘발성: 기본적으로 데이터가 휘발성(서버 종료 시 데이터 손실)이라는 특징이 있지만, 영속성(Persistence) 설정을 통해 디스크에 백업하여 데이터를 보존할 수 있다

다양한 데이터 구조 지원

단순한 키-값(Key-Value) 저장소를 넘어, 여러 복잡한 데이터 구조를 값(Value)으로 지원하여 다양한 기능을 효율적으로 구현할 수 있게한다.

자료구조설명주요 활용 예시
String텍스트, 이진 데이터 등을 저장캐싱, 단순 카운터(조회수)
List입력 순서가 유지되는 문자열 리스트최근 방문 기록, 큐 및 스택 기능 구현
Hash필드-값 쌍으로 구성된 객체 저장사용자 프로필, 대량의 객체 데이터 저장
Set중복을 허용하지 않는 문자열 집합 (정렬 X)고유 방문자 수(UV), 태그 관리, 사용자 간의 관계 (팔로우)
Sorted SetSet에 점수(Score)를 추가하여 점수 순으로 정렬되는 집합실시간 랭킹 보드, 우선순위 큐Sheets로 내보내기

싱글 스레드

  • Redis의 핵심 처리 로직은 단일 스레드로 동작한다.
  • 단일 스레드는 복잡한 동시성 제어(락) 문제를 피하게 해주어 안정적이며, 대부분의 작업이 메모리에서 빠르게 처리되므로 성능 저하가 크지 않다.
  • 하지만 시간 복잡도가 높은 명령어(O(N) 이상)를 사용할 경우 해당 연산이 완료될 때까지 다른 모든 요청이 블로킹(Blocking)될 수 있다.

영속성

메모리에 저장된 데이터를 디스크에 백업하여 데이터의 영속성을 확보하는 두 가지 방식이 있다.

  1. RDB (Redis Database): 특정 시점에 메모리의 데이터를 통째로 스냅샷으로 만들어 디스크에 저장. 복구 속도는 빠르지만, 스냅샷 시점 이후의 데이터는 유실될 수 있다.
  2. AOF (Append Only File): 모든 쓰기/수정 명령을 로그 파일에 순차적으로 기록. 데이터 유실이 거의 없지만, 파일 크기가 커지고 복구 속도가 RDB보다 느릴 수 있다.

장단점

장점

  • 압도적인 성능 (인메모리 기반)
  • 다양한 자료구조 지원 및 활용 용이
  • 간단한 명령어 구조로 개발 편의성 높음
  • Master-Slave 복제 및 클러스터 지원으로 확장성 / 가용성 높음

단점

  • 메모리 용량의 제약
  • 단일 스레드 모델로 인한 복잡한 연산 시 블로킹 위험
  • 데이터 영속성을 위한 별도 설정 및 관리 필요
  • 대용량 데이터를 Redis에만 저장하기에는 비용 부담이 큼

주요 사용 사례

캐싱 - DB 부하를 줄이기 위해 자주 조회되는 데이터를 임시로 저장하여 애플리케이션의 응답 속도를 향상

세션 관리 - 분산된 웹 애플리케이션 환경에서 사용자 로그인 세션 정보를 중앙 집중식으로 저장하여 일관성을 유지

킹 시스템 - Sorted Set 자료구조를 활용하여 사용자 점수나 순위를 실시간으로 빠르게 계산하고 조회

메시지 브로커 / 대기열 - List 자료구조를 큐처럼 사용하거나, Pub/Sub (발행/구독) 기능을 활용하여 실시간 채팅 및 알림 서비스 구현

분산 락 - 여러 서버가 공유 자원에 동시에 접근하는 것을 막기 위해 Redis를 사용하여 락(Lock) 기능을 구현

profile
노력에는 지름길이 없으니까요

0개의 댓글