개인의 기록
  • 소개
  • 프로젝트
  • 글
  • 링크

© 2026 newgirok

← 글 목록

Redis — 메모리에 데이터를 저장하는 데이터베이스

2026년 1월 9일
RedisIn-MemoryNoSQL캐시데이터베이스

데이터베이스에 쿼리를 날릴 때마다 디스크를 읽는다면 느릴 수밖에 없습니다. 자주 조회되는 데이터를 메모리에 올려두고 빠르게 반환하는 것이 Redis의 핵심입니다. 단순한 캐시를 넘어 세션 저장소, 메시지 큐, 실시간 랭킹 등 다양한 용도로 쓰입니다.

Redis란

Redis는 Remote Dictionary Server의 약자입니다. 메모리에 데이터를 저장하는 In-Memory 데이터베이스로, Key-Value 구조를 기반으로 합니다.

왜 빠른가

일반적인 데이터베이스(MySQL, PostgreSQL 등)는 데이터를 디스크에 저장합니다. 데이터를 읽으려면 디스크에서 메모리로 불러오는 과정이 필요합니다. Redis는 데이터가 이미 메모리에 있으므로 이 과정이 생략됩니다.

일반 DB:  요청 → 디스크 I/O → 데이터 반환  (밀리초 단위)
Redis:    요청 → 메모리 조회 → 데이터 반환  (마이크로초 단위)

초당 수십만 건의 읽기/쓰기를 처리할 수 있는 이유입니다.

핵심 특성

Key-Value 구조

모든 데이터는 Key와 Value의 쌍으로 저장됩니다. Key로 Value를 즉시 찾을 수 있습니다.

Key               Value
─────────────────────────────
user:1000         {"name": "철수", "age": 30}
session:abc123    {"userId": 1000, "role": "admin"}
page:home:views   42837

Single Thread

Redis는 기본적으로 단일 스레드로 동작합니다. 하나의 명령이 끝난 뒤 다음 명령을 처리합니다. 덕분에 Lock이나 동기화 없이도 원자성(Atomicity)이 보장됩니다.

원자성(Atomicity): 작업이 완전히 실행되거나 전혀 실행되지 않는 특성. Redis는 단일 스레드이므로 명령 하나가 중간에 다른 명령에 끼어들리지 않습니다.

Persistence

메모리 데이터베이스지만 데이터를 디스크에 저장하는 기능을 제공합니다. 서버가 재시작되어도 데이터를 복구할 수 있습니다. RDB 스냅샷과 AOF 로그 두 가지 방식을 제공합니다.

주요 사용 사례

캐시

데이터베이스 조회 결과를 Redis에 저장해두고, 같은 요청이 오면 데이터베이스를 거치지 않고 Redis에서 바로 반환합니다. 응답 속도를 크게 높이고 데이터베이스 부하를 줄입니다.

세션 저장소

로그인 세션 정보를 Redis에 저장합니다. 서버가 여러 대여도 모두 같은 Redis를 바라보므로 어느 서버에 요청이 들어와도 세션을 읽을 수 있습니다.

실시간 랭킹

Sorted Set 자료구조로 점수 기반 정렬을 실시간으로 유지합니다. 게임 순위표, 조회수 Top 10 같은 기능을 빠르게 구현할 수 있습니다.

메시지 큐

List나 Stream 자료구조로 간단한 작업 큐를 구현합니다. 비동기 처리, 이메일 발송, 이미지 변환 등 백그라운드 작업에 씁니다.

Rate Limiting

API 호출 횟수를 Redis에 카운터로 저장해 특정 시간 동안 요청을 제한합니다.

Redis vs 일반 데이터베이스

항목RedisMySQL/PostgreSQL
저장 위치메모리(RAM)디스크
속도마이크로초 단위밀리초 단위
데이터 크기RAM 크기에 제한디스크 크기에 제한
자료구조String, Hash, List, Set, ZSet 등테이블(관계형)
주요 용도캐시, 세션, 큐, 랭킹영구 데이터 저장

Redis는 데이터베이스를 대체하는 것이 아니라 함께 쓰는 도구입니다. 자주 조회되는 데이터나 빠른 응답이 필요한 데이터를 Redis에 두고, 영구 보존이 필요한 데이터는 데이터베이스에 저장하는 방식이 일반적입니다.

← 이전 글Supabase 프로젝트 구조 — 실무 폴더 구성 방법
다음 글 →Redis Architecture — 단일 스레드로 빠른 이유