Redis 도입 배경 및 개요

장민근·2025년 1월 20일
0

Redis

목록 보기
1/14

Redis 도입 배경

Redis에 대한 간단한 개요에 대해 서술하기 앞서 Redis의 학습 이유 및 목표에 대해 간략하게 말하고자 한다.

2024년 하반기, 부트캠프를 수료한 후 뜻이 맞는 팀원들과 개별 프로젝트를 진행하게 되었다. 내가 맡은 파트는 알림 시스템이었으며, 이 파트는 다음과 같은 특징을 가지고 있다:

  • 짧은 시간 동안 대량의 데이터가 생성되고 삭제된다.

  • 순간적으로 높은 트래픽이 발생할 가능성이 크다.

이를 기존의 SSE와 RDB만으로 처리한다면, 알림 데이터의 특성상 효율적인 관리와 성능 보장이 어려울 것으로 판단했다. 그래서 자연스레 Redis에 관심을 가지게 되었다. 이후 Redis를 학습하여 프로젝트에 적용하기로 결정하였고, 필요한 개념 및 궁금증을 GPT에게 반복 질문하여 나에게 필요한 핵심 기능만을 간추렸다.

Redis에서 필요한 주요 개념

  • 이벤트 기반 처리

알림 시스템은 주로 이벤트 기반으로 동작하며, Redis뿐만 아니라 RabbitMQ와의 연계를 고려하여 학습이 필요했다.

  • 캐싱 및 메모리 관리

Redis를 사용하는 주된 이유 중 하나는 조회 성능 향상이다. 하지만 메모리 관리를 하지 않으면 효율이 떨어질 수 있다.

Redis는 TTL 설정과 LRU 정책을 통해 메모리 관리를 지원한다.

  • 데이터 백업

Redis는 데이터를 디스크에 저장할 수 있도록 스냅샷과 AOF(Append Only File) 기능을 제공한다. 이는 데이터 복구와 안정성을 확보하는 데 중요한 요소이다.

Redis의 이러한 특징과 기능이 알림 시스템에 적합하다고 판단했다. 어쨋든, 프로젝트에 적용 가능한 핵심 기능을 찾아서 이를 위주로 강의를 검색하다보니 내게 필요로 하는 개념들이 잘 정리되어 있는 강의를 찾게 되었다.
Redis 강의 바로가기
따라서 이 글은 앞으로 위 강의에 대해 간략하게 복습겸 개념을 정리해보는 포스트가 되겠다.
( 정리하는데 시간을 많이 소비하지 않기 위해 강의를 들으며 정리한 글은 GPT를 활용해 문장을 다듬을 계획임을 미리 밝힌다.
100% GPT 아니고 내가 정리한 내용 GPT한테 다듬어달라고 하고 또 읽어보고 수정할거니까 너무 GPT스럽다고 하지 않아줬으면 좋겠다 ㅠㅠ. )

Redis 란?

Redis는 Key-Value 형태로 데이터를 저장하는 오픈소스 소프트웨어로, 고성능의 인메모리 데이터 저장소이다. 주로 캐싱, 세션 관리, 메시지 브로커, 실시간 데이터 분석 등의 용도로 사용되며, 다양한 자료구조와 기능을 통해 유연하게 데이터를 처리할 수 있다.

Redis의 기본 개념

Key-Value 저장소

Redis는 데이터를 Key-Value 형태로 저장하며, Key는 RDBMS의 PK(Primary Key)처럼 고유 식별자로 사용된다.

Value에는 String, Hash, Set, List, Sorted Set 등 다양한 자료구조를 저장할 수 있어 유연한 데이터 관리가 가능하다.

메모리 기반 동작

Redis는 데이터를 메모리에 저장하기 때문에 매우 빠른 속도를 자랑한다.

필요에 따라 디스크를 사용하여 데이터를 백업하거나 영속성을 제공할 수 있다.

Redis가 빠른 이유

In-Memory 기반

데이터가 메모리에 저장되므로, 디스크 기반 저장소에 비해 데이터 읽기/쓰기 속도가 월등히 빠르다.

싱글 스레드 기반

Redis는 싱글 스레드로 작동하며, 모든 명령어를 순차적으로 처리한다.

이는 데이터 일관성을 보장하고, 복잡한 동기화 작업 없이 Atomic한 처리가 가능하다.

Redis의 주요 특징

다양한 자료구조 지원

String: 단순 값 저장.

Hash: 필드와 값의 쌍으로 구성된 맵 형태.
(우리가 가장 많이 사용하게될 자료구조이지 않을까 싶다.)

List: 순서가 있는 값들의 컬렉션.

Set: 중복되지 않는 값들의 집합.

Sorted Set: 점수와 함께 정렬된 집합.

영속성 지원

Redis는 데이터를 영속적으로 저장할 수 있도록 여러 옵션을 제공한다.

RDB 스냅샷: 특정 시점의 데이터를 디스크에 저장.

AOF(Append Only File): 모든 쓰기 작업을 로그로 기록하여 복구 가능하다.

데이터 일관성과 Atomic한 처리

싱글 스레드 기반으로 명령이 Queue처럼 순차적으로 처리되어 데이터의 일관성을 유지한다.

분산 락과 같은 기능을 통해 트랜잭션 수준의 작업도 가능하다.

확장성과 고가용성

Redis는 클러스터를 통해 데이터 샤딩과 고가용성을 지원하며, 마스터-슬레이브 구조로 데이터 복제를 수행한다.

Redis의 활용 사례

캐싱

자주 사용하는 데이터를 Redis에 저장하여 애플리케이션 성능을 향상시킨다.

세션 관리

사용자 세션 데이터를 저장하고 TTL(Time-To-Live)을 설정하여 만료를 관리한다.

실시간 데이터 처리

실시간 로그 분석, 메시지 큐(Pub/Sub)를 활용한 알림 시스템 등에서 활용된다.

리더보드/순위 시스템

Sorted Set을 이용하여 점수 기반의 순위표를 구현한다.

분산 락

특정 리소스에 대해 분산 환경에서의 동시 접근을 제어한다.

결론

Redis는 고성능, 유연성, 확장성을 제공하는 인메모리 데이터 저장소로, 다양한 자료구조와 기능을 통해 많은 애플리케이션에서 핵심적인 역할을 한다. 빠른 성능과 데이터 일관성, 그리고 영속성 옵션을 활용하여 효율적이고 신뢰성 있는 시스템을 구축할 수 있다.

이 글은 Redis에 대한 전반적인 개요를 설명한 글이다.
따라서 처음 배우는 입장에서 아 이런게 있구나, 내 프로젝트에는 어떤 부분을 적용하면 좋겠네? 라는 인사이트를 얻어가는 용도로만 봐주었으면 좋겠다.
추후 저 위의 내용은 강의를 듣고 정리할 계획이다.

profile
안녕하세요!! 백엔드 개발자를 희망하는 취준생입니다 !!

0개의 댓글