데이터베이스: Redis (0) - Redis란?

DoHn·2025년 7월 2일
0

Redis는 극한의 속도를 자랑하는 인메모리 데이터 저장소로, 캐시부터 실시간 데이터 처리까지 모든 퍼포먼스를 가속시켜준다.

우리는 다양한 프로젝트를 진행하다 보면 종종 다음과 같은 고민을 하게 된다.

  • DB 조회가 느리다... 캐싱을 해야 하나?
  • 트래픽이 몰릴 때 응답이 버벅거린다
  • 실시간 랭킹이나 세션 저장을 어떻게 하지?

이런 문제를 해결해주는 빠르고 가벼운 저장소가 바로 Redis이다.


Redis란?

Redis는 Remote Dictionary Service의 약자로, 오픈 소스 기반의 Key-Value 형태 In-Memory 데이터 저장소이다.
Key-Value 기반이기 때문에 쿼리를 직접 보낼 필요 없이 O(1)O(1)의 시간 복잡도로 값을 바로 조회할 수 있다.

또한 디스크가 아닌 메모리에서 데이터를 처리하므로 속도가 매우 빠르고,
NoSQL 구조이며 List, Hash, Set, Sorted Set 등 다양한 자료구조도 지원한다.


Redis가 빠른 이유

Redis는 내부적으로 해시 테이블(dict) 구조를 기반으로 동작한다.

SET user:1001 "Alice"
GET user:1001 # -> "Alice"

왜 빠를까?

Redis는 key를 해시 처리한 후, 메모리 주소에서 즉시 조회한다. 디스크 접근이 필요 없기 때문에, 일반 RDBMS보다 수백 배 이상 빠르다.

Redis는 "Key → Value"를 메모리에서 바로 찾아내므로,
쿼리가 아닌 "주소 접근"처럼 작동한다.


인메모리(In-Memory) 방식

인메모리 방식이란, 데이터를 하드디스크가 아닌 RAM에 올려서 직접 처리하는 방식이다.
메모리 내부에서 모든 연산이 이루어지기 때문에 저장과 조회 속도가 매우 빠르다.

하지만 한계도 있다:

  • RAM 용량을 초과하면 더 이상 저장할 수 없고,
  • 별도로 영속성 설정을 하지 않으면 Redis 재시작 시 데이터가 유실될 수 있다.

Redis는 언제 쓸까?

용도설명
캐시DB 쿼리 결과, API 응답 등을 임시 저장해 빠른 응답 제공 가능
세션 저장소JWT나 로그인 세션 등 사용자 인증 데이터 저장
실시간 랭킹Sorted Set으로 실시간 점수 정렬 처리
메시지 큐Pub/Sub 또는 Stream 구조로 간단한 비동기 처리
토큰 저장/Rate Limit인증/요청 제한 제어

MySQL과 Redis를 같이 쓰는 이유

Redis는 MySQL을 대체하지 않고, 보완하는 용도로 많이 사용된다.

  • MySQL: 영속적인 데이터 저장
  • Redis: 빠른 조회/임시 데이터 저장

예시: 게시글 조회수 처리

  1. 사용자들이 게시글을 조회할 때 Redis에서 조회 수를 증가시킨다.
    INCR post:123:views
  2. 일정 주기마다 MySQL에 반영 (배치 업데이트)

이렇게 하면 DB 부하를 줄이면서도 실시간 응답이 가능해진다.


Redis 사용 시 주의점

  • 메모리 용량 한계: In-Memory 기반이므로 용량 초과 시 문제가 발생할 수 있다.
  • 데이터 유실 가능성: 기본 설정에선 재시작 시 데이터가 날아갈 수 있다.
    RDB, AOF 설정 필요
  • 키 설계 중요: 무분별한 키 생성은 메모리 낭비와 관리 어려움을 초래할 수 있다.

다음 포스팅에서는 실전에서 Redis를 어떻게 사용하는지를 다뤄볼 예정이다.

profile
DoHn's dev log

0개의 댓글