Redis의 특징, 사용시 주의점

조대훈·2024년 9월 19일
post-thumbnail

Redis


  • 고성능 Key-Value 구조의 저장소
  • 비정형 데이터를 저장, 관리하기 위한 오픈 소스 기반의 NoSQL
    - 비정형 데이터란 정의된 구조 없이 정형화 되지 않은 데이터를 말한다.
    - 예: 동영상 파일, 오디오 파일, 사진, 보고서
  • NoSQL : 비관계형 데이터베이스
    - 유연한 스키마, 수평적 확장, 대용량 데이터 처리에 적합
  • In-Memory 데이터 구조를 가진 저장소
    - 컴퓨터 주기억 장치인 RAM에 데이터를 올려 사용하는 방법
    - 하드디스크를 오고 가는 과정을 거치지 않아 속도가 빠르다.
    - 데이터가 유실될 가능성이 있다.

Redis 의 특징


  • Key,Value 구조
  • 빠른 처리속도
  • DataType (Collection) 지원

DB 에 데이터를 저장하고, 저장된 데이터를 정렬해서 다시 읽어오는 과정은 디스크에 직접 접근 해야 하기 때문에 시간이 그만큼 소요되지만, 인메모리 DB인 Redis 를 사용하여 제공하는 Sorted-Set 자료구조를 사용하면 좀 더 빠르고 간단하게 데이터 정렬이 가능하다.

AOF,RDB 방식


  • 인메모리 데이터 저장소가 가지는 휘발성의 특성으로 데이터가 유실될 경우를 방지하여 백업 기능을 제공한다.
    - AOF
    - Redis 의 모든 write/update 연산 자체를 모두 log 파일에 기록한다
    - RDB
    - 순간적으로 메모리에 있는 내용 전체를 디스크에 담아 영구 저장한다.
    - Redis Sentinel 및 Redis Cluster 를 통한 자동 파티셔닝 제공
    - Mast와 Slaves 로 구성하여 여러대의 복제본을 만들고, 여러대의 서버로 읽기 확장이 가능하다.
    - 파티셔닝
    - 다수의 Redis 인스턴스가 존재할 때 데이터를 여러곳에 분산 시키는 기술
    - 각 Redis 인스턴스는 전체 키 중 자신에게 할당된 일부 파티션 키만 관리한다.
    - 다양한 프로그래밍 언어 지원
    - 싱글 스레드
    - 한 번에 단 하나의 명령만 수행하므로 RaceCondition 이 발생하지 않는다
    - 공유 자원에 대해 여러 프로세스가 동시에 접근을 시도할 때, 타이밍이나 순서 등이 결과값에 영향을 줄수 잇는 상태

Redis 사용시 주의점


  • 시간 복잡도
    - 싱글 스레드 사용으로 한 번에 하나의 명령만 수행이 가능한데, 처리 시간이 긴 요청의 경우 장애가 발생한다.
  • 메모리 단편화
    - 크고 작은 데이터를 할당하고 해제하는 과정에서 메모리 파편화가 발생 수 있다.

![[Pasted image 20240919233055.png]]

  • RAM 에서 메모리를 할당받고 해제하는 과정에서 위와 같이 빈 공간이 생기는데, 새로운 메모리 할당시 사용 가능한 메모리가 충분히 존재 하지만 메모리의 크기 만큼의 부분이 없어 메모리 낭비가 심하게 됨
  • 이 현살이 지속 발생시 실ㄹ제 Physical 메모리가 커져 프로세스가 죽는 현상이 발생할 수 있으므로, redis 를 사용시에 메모리를 적당히 여유 있게 사용하는 것이 좋다.

참고
https://velog.io/@wnguswn7/Redis%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C-Redis%EC%9D%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%82%AC%EC%9A%A9-%EC%8B%9C-%EC%A3%BC%EC%9D%98%EC%A0%90

profile
백엔드 개발자를 꿈꾸고 있습니다.

0개의 댓글