Redis란? 인메모리 데이터 구조 저장소)

Juni_woo·2026년 1월 28일

웹 개발 지식

목록 보기
4/4

Redis란 무엇인가

Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템 입니다.

비정형 데이터는 일정한 구조나 형식 없이 저장된 데이터를 의미하며 이러한 데이터들을 저장하고 관리하기 위한 관리 시스템이 Redis입니다.


Redis는 비관계형 데이터베이스?

비관계형 데이터베이스는 특정 데이터 모델에 대해 특정 목적에 맞추어 구축되는 데이터베이스로서 유연한 스키마를 갖추고 있습니다.

이러한 데이터베이스 유형은 큰 데이터 볼륨, 짧은 지연 시간과 유연한 데이터 모델이 필요한 애플리케이션에 최적화 되어 있습니다.

관계형 데이터베이스와 차이점은?

데이터 저장 방법에 차이점이 있습니다.
관계형 데이터베이는 데이터를 행과 열이 있는 테이블 형식으로 저장합니다.

PKCOL1COL2
pk1a1
pk2b2
pk3c3

비관계형 데이터베이스는 데이터에 엑세스하고 관리하기 위해 다양한 데이터 모델을 사용합니다.
스키마가 없기 때문에 관계형 데이터베이스에서 요구되는 제약 조건 없이 저장됩니다.

대표적으로 Key, Value 형태로 저장하며 이때 Key값은 고유 식별자 역할을 합니다. 단순한 객체부터 복잡한 집합체에 이르기까지 무엇이든 키와 값이 될 수 있습니다.

이 외에도 도큐먼트 데이터베이스와 그래프 데이터베이스가 있습니다.


Redis는 왜 사용할까?

데이터 베이스는 데이터를 물리 디스크에 직접 쓰기 때문에 서버에 문제가 발생하여 다운되더라도 데이터가 손실되지 않습니다.

하지만 매번 디스크에 접근해야 하기 때문에 사용자가 많아질 수록 부하가 많아져서 느려질 수 있습니다.

일반적으로 서비스 운영 초반이거나 규모가 작은, 사용자가 많지 않은 서비스의 경우에는 WEB-WAS-DB의 구조로도 데이터베이스에 무리가 가지 않습니다.

그러나 사용자가 늘어난다면 데이터베이스가 과부하 될 수 있기 때문에 캐시 서버를 도입하여 사용하게 됩니다. 그리고 이 캐시 서버로 이용할 수 있는 것이 바로 Redis입니다.


캐시 서버는 뭔가요?

캐시 서버는 클라이언트가 자주 요청하는 데이터를 메모리나 빠른 스토리지에 저장하여, 반복적인 데이터 요청 시 서버에 부담을 줄이고 응답 시간을 단축하는 역할을 합니다.

이 시스템은 네트워크 대역폭을 절약하고, 데이터베이스나 원본 서버의 부하를 감소시켜 성능을 최적화하는 데 중요한 역할을 합니다.

간단한 예를 들어보겠습니다.

1. 클라이언트가 서버에 데이터를 요청합니다.
2. 서버는 외부 API를 통해 데이터를 가져오고 그것을 응답으로 넘겨줍니다.
3. 이 때 외부 API 접근의 응답속도가 1000ms 정도 나옵니다.
4. 클라이언트는 데이터를 응답받기까지 1000ms는 적다고 생각합니다.
5. 그래서 중간에 캐시에 저장하기로 합니다.
6. 이제부터 서버는 5 ~ 10분 간격으로 외부 API에 데이터를 요청하여 캐시에 저장합니다.
7. 클라이언트가 서버에 데이터를 요청합니다.
8. 서버는 캐시에서 데이터를 꺼내 클라이언트로 응답해줍니다.
9. 1000ms 씩 걸리던 외부 API 접속 과정이 생략되어 클라이언트는 빠르게 데이터를 받아 볼 수 있습니다.

이렇듯 주 요청하는 데이터를 임시로 저장해두었다가 클라이언트가 요청할 때 빠르게 전달해주는 시스템입니다.


Redis의 장점은 뭔가요?

1. 성능
모든 Redis 데이터는 메모리에 저장되어 대기 시간을 낮추고 처리량을 높이며, 평균적으로 읽기 및 쓰기의 작업 속도가 1ms로 디스크 기반 데이터베이스보다 빠릅니다.

2. 유연한 데이터 구조
Redis의 데이터는 String, List, Set, Hash, Sorted Set, Bitmap, JSON 등 다양한 데이터 타입을 지원합니다.
따라서, 애플리케이션의 요구 사항에 알맞은 다양한 데이터 타입을 활용할 수 있습니다.

3. 개발 용이성
Redis는 쿼리문이 필요로 하지 않으며, 단순한 명령 구조로 데이터의 저장, 조회 등이 가능합니다.
또한, Java, Python, C, C++, C#, JavaScript, PHP, Node.js, Ruby 등을 비롯한 다수의 언어를 지원합니다.

4. 영속성
Redis는 영속성을 보장하기 위해 데이터를 디스크에 저장할 수 있습니다. 따라서 서버에 치명적인 문제가 발생하더라도 디스크에 저장된 데이터를 통해 복구가 가능합니다.

5. 싱글 스레드 방식
Redis는 싱글 스레드 방식을 사용하여 한 번에 하나의 명령어만을 처리하기 때문에 연산을 원자적으로 처리하여 Race Condition(경쟁 상태)가 거의 발생하지 않습니다.
하지만, 멀티 스레드를 지원하지 않기 때문에 시간 복잡도가 O(n)인 명령어의 사용은 주의해서 사용해야 합니다.

profile
개발 공부!

0개의 댓글