Redis란?

김다은·2023년 8월 15일
1

TIL

목록 보기
13/14

SW전문인재양성사업 2기에 참여하면서 어떤 DB를 써야하고 그 DB를 써야하는 이유를 생각해야 하는 순간이 여러번 있어서 가장 관련 지식이 없던 Redis부터 정리해보도록 하겠다!

Redis란?

  • 인메모리 데이터베이스 솔루션/인메모리 데이터 스토어
  • 다양한 기능과 유연한 데이터 구조를 지원하여 빠른 속도와 다양한 용도로 사용되는 오픈 소스 데이터베이스
  • 주로 캐싱, 세션 관리, 실시간 분석, 메시징 등 다양한 사용 사례에 적합한 특징을 가지고 있음

인메모리란?

  • 주 메모리를 활용하여 데이터나 프로그램을 저장하여 접근 속도를 크게 향상시키는 기술
  • 데이터 처리 속도를 빠르게 만들어 주는 기술
  • 주로 데이터베이스 관리 시스템 (DBMS)이나 캐싱 솔루션에서 활용

인메모리 장점

  • 빠른 응답 시간
    메모리는 디스크보다 매우 빠른 속도로 접근 가능
    데이터를 신속하게 검색하거나 조작 가능
    웹 애플리케이션과 같은 실시간 요구 사항을 만족하는 데 유용함

  • 높은 처리량
    대량의 데이터도 빠르게 처리 가능
    데이터베이스나 분석 작업에서 유용

  • 복잡한 분석
    대규모 데이터를 더 빠르게 분석하고 쿼리 가능
    비즈니스 인텔리전스 및 분석에 유리

  • 캐싱
    데이터나 연산 결과를 메모리에 저장
    빠른 접근을 통해 성능을 개선하는 캐싱 시스템에 유용

  • 적은 디스크 I/O
    데이터를 메모리에 보관해서 디스크 I/O가 줄어들음
    디스크 부하를 감소


Redis 장점

  • Key-Value 형태의 데이터 저장소
    단순한 Key-Value 스토어 형식을 지원하며, 다양한 데이터 타입의 값을 Key와 연결하여 저장

  • 다양한 데이터 구조
    단순한 문자열(String)뿐만 아니라 리스트(List), 세트(Set), 정렬된 세트(Sorted Set), 해시(Hash) 등 다양한 데이터 구조를 지원하여 데이터의 다양한 활용이 가능

  • Pub/Sub 모델
    Publish/Subscribe 모델을 지원하여 메시지 브로커로 사용 가능
    메시지를 발행하고 구독하는 방식으로 실시간 데이터 푸시 등의 용도로 활용

  • 디스크 저장 및 복제
    Redis는 현재 메모리 상태를 디스크로 저장 및 영구적인 데이터 보존이 가능
    마스터/슬레이브 구조를 지원하여 데이터의 복제와 고가용성을 제공

  • 높은 성능
    Redis는 메모리 내 데이터 처리로 인해 매우 빠른 속도를 제공
    초당 100,000 QPS 수준의 높은 성능을 보여줌

  • 클러스터링
    Redis 클러스터링을 통해 데이터를 여러 노드로 분산하여 처리 가능

  • 트랜잭션 및 스냅샷
    Redis는 트랜잭션을 지원하여 여러 명령을 한 묶음으로 실행 가능
    스냅샷을 통해 데이터 상태의 백업 및 복구 가능

  • Lua 스크립팅
    Redis는 Lua 스크립팅 언어를 지원하여 자체적으로 스크립트를 실행
    데이터 처리를 커스터마이징 가능


Redis의 단점

메모리 제한: Redis는 인메모리 데이터베이스로 모든 데이터를 주 메모리에 저장합니다. 따라서 사용 가능한 메모리 양에 제한이 있습니다. 큰 데이터셋을 다루거나 대량의 데이터를 저장해야 하는 경우에는 메모리 제한으로 인해 문제가 발생할 수 있습니다.

  • 데이터 영속성
    전원이 꺼지거나 재시작되면 메모리의 데이터가 모두 사라짐

  • 단일 스레드 모델
    Redis는 단일 스레드 모델을 사용하여 하나의 명령만 처리
    멀티코어 활용이 어려움
    CPU 집중적인 작업의 성능이 저하될 수 있음

  • 응답 시간의 불안정성
    일부 명령이나 작업이 긴 실행 시간을 요구시 다른 명령들의 응답 시간에 영향을 줄 수 있음
    응답 시간의 불안정성이 발생 가능

  • 분산 시스템의 복잡성
    Redis는 클러스터링을 지원하나 여러 노드 간의 데이터 동기화 및 관리를 위해 추가적인 구성 및 관리 필요
    분산 시스템을 구성하는 것이 복잡함

  • 메모리 비용
    대규모 데이터 저장에는 많은 메모리가 필요함
    메모리의 가격에 따른 비용이 고려됨

  • 데이터 타입 복잡성
    데이터의 저장 형태와 검색 방식에 대한 계획이 필요함

  • 데이터 보안
    Redis 서버가 인터넷 또는 로컬 네트워크와 같은 외부 네트워크에 연결되어 있어 외부에서 서버에 접근할 수 있는 경우 데이터 보안에 대한 이슈가 생길 수 있음

우선 여러 블로그와 e-book 그리고 ChatGPT를 이용하여 정리해보았고 이 내용이 머리에 잘 들어올 수 있도록 반복 학습을 해보겠습니다!

profile
이제는 더이상 물러날 곳이 없다

0개의 댓글