Redis

박상민·2024년 3월 20일

Infra

목록 보기
3/7
post-thumbnail

Redis

  • 사용 이유

    • 캐싱(자주 액세스 되는 데이터를 메모리에 저장하여 시간 단축), 세션에 유용하다.
    • 높은 성능과 확장성 제공
    • in-memory 형태의 No-SQL, key-value 쌍의 해쉬 맵 형태의 데이터베이스이다.
    • 모든 데이터를 메모리에 저장하므로 디스크 I/O(입출력) 오버헤드가 없다. 이로 인해 매우 빠른 읽기와 쓰기 작업을 수행할 수 있다.
  • 사용하는 경우

    • 광범위한 데이터 구조 및 스트림 처리 기능에 대한 액세스 필요
    • 키와 값을 제자리에서 수정하고 변경할 수 있는 기능이 필요
    • 사용자 지정 데이터 제거 정책이 필요
    • 백업 및 웜 재시작을 위해 데이터를 디스크에 유지해야 한다.
    • 복제본 및 클러스터링을 통해 애플리케이션의 높은 가용성 또는 확장성을 확보해야한다.

사용하는 방법

로컬 환경에서 레디스를 호출

  • EC2를 예로 들면 인스턴스에 레디스를 설치해 인스턴스 메모리를 사용해 레디스를 사용하는 방법
    • 인스턴스의 메모리 여유가 있다면 비용적인 측면으로나 사용성 측면으로나 뛰어남
💡 Redis를 사용하기 위해 억지로 넣는 것은 좋은 접근이 아니다.

웹 서버에서 키-값 형태의 데이터 타입을 처리해야 하고, I/O가 빈번히 발생해 다른 저장 방식을 사용하면 효율이 떨어지는 경우에 사용해야한다.

  • 예시 유튜브 조회수와 같은 카운트 형태의 데이터
    • 인기 동영상의 경우에는 1시간도 안돼서 100만 조회수를 넘기는 경우가 많다.

    • 이때 조회수에 해당하는 데이터를 RDS 형태의 데이터에 저장해 I/O를 반복한다면 엄청난 자원 + 쿼리가 사용될 것이다.

      이처럼 많은 I/O를 발생시키는 데이터를 처리할 때 레디스를 사용해 데이터를 캐싱 처리하고, 일정한 주기에 따라 RDS에 업데이트를 한다면 RDs에 가해지는 부담을 크게 줄이고, 성능을 크게 향상할 수 있다.

많은 I/O 말고도 사용자의 세션 관리에도 많이 사용된다.

  • 사용자의 세션을 유지하고, 불러오고 여러 활동들을 추적하는 경우 매우 효과적이다.

0개의 댓글