끄적끄적

레디스(Redis) 알아보기

integerJI 2024. 1. 7. 23:11

 

Redis란?

Redis는 빠르고 간편한 오픈 소스 DB이다. 주로 메모리에 데이터를 저장하여 높은 성능을 제공하며, 캐싱, 세션 관리, 메시지 브로커 등에 활용된다. 기본적으로 키-값 형태로 데이터를 저장한다.

 

  1. Redis의 특징
    • 메모리 기반의 데이터 저장
      레디스는 데이터를 주로 메모리(RAM)에 저장하여 빠른 읽기와 쓰기 속도를 제공한다. 이는 디스크 기반의 데이터베이스보다 높은 성능을 실현할 수 있다. 메모리 기반의 저장은 주로 캐싱 및 높은 처리량이 필요한 실시간 응용 프로그램에서 효과적으로 사용되지만 아무래도 휘발성 메모리에 저장하기 때문에 백업을 효율적으로 잘 해두어야 한다.
    • 키-값 구조
      레디스는 간단한 키-값 구조로 데이터를 저장한다. 각 데이터는 고유한 식별자인 "키"와 그에 대응하는 "값"으로 이루어져 있어서 데이터를 빠르게 검색하고 관리할 수 있다. 그리고 익숙하다!
    • 다양한 데이터 타입:
      레디스는 다양한 데이터 타입을 지원한다. 문자열, 리스트, 셋, 해시, 정렬된 집합 등 다양한 데이터 구조를 활용할 수 있으며 이는 사용자가 다양한 형태의 데이터를 저장하고 조작할 수 있게 해주어 유연한 활용이 가능하다
  2. 사용하는 주요 이유
    • 캐싱 시스템
      레디스는 자주 사용되는 데이터를 빠르게 제공하기 위한 캐싱 시스템으로 활용된다. 매번 계산하거나 디스크에서 읽어오는 데 소요되는 시간을 절약하고, 자주 업데이트되지 않는 데이터를 메모리에 저장하여 높은 성능을 유지할 수 있다.
    • 세션 관리
      애플리케이션에서 사용자 세션을 효과적으로 관리하기 위해 레디스를 사용할 수도 있다. 사용자 로그인 정보나 세션 데이터를 안정적으로 저장하고 검색하여 빠르게 세션을 관리할 수 있다.
    • 메시지 브로커로의 활용
      레디스는 경량 메시지 브로커로 활용될 수 있다. 다른 시스템 간의 비동기 통신을 지원하며, 메시지 큐 형태로 메시지를 보내고 받아서 분산 시스템에서 유용하게 활용된다. 이로 인해서 로그 정보나 알림 메시지를 메시지 브로커를 통해 전송하여 중요한 이벤트나 상태 변화에 대한 정보를 실시간으로 수집하거나 통지할 수 있어 좋다.
  3. 정리하자면 어디서 레디스를 쓰는게 좋을까?
    • 높은 읽기 및 쓰기 성능이 필요한 경우
      레디스는 메모리 기반의 저장소를 사용하여 빠른 읽기 및 쓰기 성능을 제공하기 때문에 응답 시간이 중요한 실시간 응용 프로그램이나 캐싱 시스템에서 효과적으로 사용된다. 제 생각으론 대용량 데이터를 빠르게 조회하는 곳에서 쓰면 확실히 좋은 것 같다.
    • 데이터 분석 및 실시간 이벤트 처리:
      실시간 데이터 처리와 분석이 필요한 경우, 레디스는 메모리 기반의 특성으로 빠른 속도로 데이터를 처리할 수 있어 적합다. 이는 실시간 대시보드, 이벤트 로깅, 분산 메시지 브로커 등에 활용될 수 있고 다양한 데이터 활용이 가능하다.
  4. 레디스의 단점
    • 데이터의 영속성 부재
      레디스는 주로 메모리 기반의 데이터베이스로서, 전원이 꺼지거나 서버가 재시작되면 데이터가 손실될 수 있다... 이는 데이터의 영속성이 보장되지 않으며 주기적인 스냅샷 백업이나 AOF(Append-Only File) 등 잘 대비를 해야한다.
    • 용량 제한
      레디스는 메모리 기반의 저장소로 용량이 제한되어 있다. 매우 큰 데이터셋을 다루기에는 부적합하며, 대용량의 데이터를 다루기 위해서는 메모리를 확장하는 대신 다른 데이터베이스 시스템을 고려해야 할 수도..있다.
    • 복잡한 쿼리 처리 부족
      레디스는 기본적으로 간단한 키-값 구조이기 때문에 다양한 쿼리나 복잡한 데이터 연산을 처리하는 데는 적합하지 않을 수 있다. 관계형 데이터베이스 시스템보다는 데이터 모델이 단순하고 직관적인 편이며 잘 고려하고 도입을 해야한다.
    • 단일 스레드 구조
      레디스는 단일 스레드로 동작한다. 그래서 동시에 명령어를 처리하는 데에는 한계가 있다. 이는 다중 코어를 활용하지 못하고 단일 코어의 성능에 의존한다는 의미이며, 몇몇 CPU 바운드 작업에 대한 처리 속도를 제한할 수도 있다.

 

각 솔루션에 따라 레디스를 정말 잘 활용할 수 있다고 생각한다. 단점이 뭐가 있을까? 하고 여러가지를 알아 보았지만 단점에 걸리지 않는 정도이고 효율적으로 사용한다면 레디스는 충분히 좋은 시스템이라고 생각한다. 

 

이번에는 글쓰기 연습 겸 정리하면서 글을 적어보았다. 분명 저번 글까지만 해도 잘 쓰고 있다고 생각했는데 막상 적고 나니까 어렵다!

'끄적끄적' 카테고리의 다른 글

NoSQL이란?  (1) 2023.12.10
.  (0) 2023.09.25
근황  (0) 2023.09.11
비사이드 포텐데이 후기 - 10일만에 서비스 배포하기  (0) 2023.08.15
DDD 8기의 마무리와 새로운 시작  (2) 2023.02.12