본문 바로가기
Server

Redis(Remote Dictionary Server) 이란?

by 코딩박사 2025. 7. 1.
반응형

Redis 이란?

메모리 기반의 초고속 Key-Value 저장소
공식 이름: Remote Dictionary Server

- 데이터를 RAM(메모리) 에 저장 → 디스크보다 수천 배 빠름
- Key와 Value를 다양한 형태(List, Set, Hash 등)로 저장 가능
- 단순 캐시를 넘어서, 메시지 큐, 세션 관리, 실시간 순위 집계 등 다양하게 사용됨

특징 요약

1. 빠르다
    - 모든 데이터가 메모리에 있어 조회/쓰기 속도가 1ms 미만
    - 초당 수십만~수백만 건 처리 가능
2. 다양한 자료구조
    - String, List, Set, Sorted Set, Hash, HyperLogLog, Stream 등
    -  단순 캐시 외에 순차 처리(큐), 순위(랭킹) 등도 구현 가능
3. 단일 스레드 기반
    -  내부적으로 싱글 스레드 → 레이스 컨디션 없이 동작
    -  동시에 다수의 클라이언트 요청 처리 가능
4. 데이터 영속성 (옵션)
    -  메모리에만 두는 게 아니라, 주기적으로 디스크에 저장 가능
    -  Redis RDB, AOF 방식
5. 간단한 복제/클러스터링
    -  마스터-슬레이브 복제, Sentinel을 통한 장애 조치
    -  Redis Cluster로 샤딩(수평 확장)

무엇에 쓰나? (실무 용도)

용도 설명
캐시 DB 데이터, API 응답 등을 메모리에 저장 → 빠른 조회
List 자료구조 + BRPOP → 순차 처리, 비동기 작업
세션 저장소 PHP, Node 등에서 세션을 Redis에 저장
실시간 순위/랭킹 Sorted Set → 점수 기반으로 순위 조회
Pub/Sub 실시간 알림, 채팅 등 메시지 브로드캐스팅
분산락 SETNX → 동시성 제어, 중복 방지

 

자료구조 예시

자료구조 설명 예시
String 단일 값 캐시, 카운터
List 순서가 있는 값 목록 큐(작업 순차 처리)
Set 중복 없는 집합 태그, 좋아요 유저 ID
Sorted Set 점수가 있는 집합 랭킹, 리더보드
Hash Key-Value 묶음 사용자 정보 (id → 필드들)
Stream 로그, 채팅 메시지 메시지 스트림 처리 

 

실무 시나리오 예

예) 동시에 많은 결제 요청 → 순차 처리

  1. PHP가 RPUSH 로 작업을 Redis 리스트에 추가
  2. 워커(PHP or Node)가 BRPOP 으로 하나씩 꺼내 처리
  3. 처리 중에는 다른 작업을 꺼내지 않음 → 순서 유지
  4. 처리 결과 DB에 기록

   * 덕분에 속도도 빠르고, 순서도 유지

 

왜 DB만 쓰지 않고 Redis를 쓰나?

1. DB에 직접 INSERT/SELECT → 느림 (디스크 I/O)
2. Redis는 메모리 기반 → 초고속
3. 다수 요청에도 순서·락 처리 용이
4. DB 부하를 낮춤 → 시스템 안정성↑

반응형