Redis

Danny·2023년 11월 23일
0

백엔드

목록 보기
9/10

Redis?

  • 오픈소스 기반의 인메모리 데이터베이스
  • key-value 구조를 사용하여 데이터를 저장한다.
  • 메모리에 데이터를 캐싱하여 빠른 읽기와 쓰기를 지원한다.
  • 다양한 데이터 구조를 지원한다.
  • 캐싱,자원 관리, 실시간분석 등의 다양한 용도로 사용된다.

key-value

캐시

일반적으로 서비스 규모가 작거나, 사용자가 많지 않은 서비스의 경우에는 WEB - WAS - DB 의 구조로도 데이터베이스에 무리가 가지 않지만, 사용자가 늘어난다면 데이터베이스에 과부하가 걸릴 수 있으므로, 이때 캐시 서버를 도입하여 사용한다.

이 캐시 서버로 이용할 수 있는 것이 바로 Redis 이다.

  • 캐시 : 한번 읽어온 데이터를 임의의 공간에 저장 → 다음에 읽을 때 빠르게 결과값을 받을 수 있도록 한다.
  • 같은 요청이 여러번 들어오는 경우, 데이터베이스를 거치지 않고 캐시 서버에서 첫번째 요청으로 저장된 결과값을 바로 내려줄 수 있다.

Redis 특징

  • 인메모리 데이터 저장

    • Redis는 인메모리 데이터 저장소로, 기본적으로 RAM(메모리)를 사용하여 데이터를 저장한다.
    • 빠른 속도로 데이터를 처리할 수 있다.
  • 다양한 데이터 구조 지원

    • String, Hash, List, Set 등 다양한 데이터 구조를 지원한다.
    • 다양한 데이터 구조를 사용하여 데이터를 저장 , 조회,수정,삭제가 가능하다.
  • 영속성 지원

    • Redis는 기본적으로 메모리에 데이터를 저장하지만, 디스크에도 지속적으로 저장할 수 있다. → snapshotting
    • Snapshotting : Redis의 내장 스냅샷 기능을 사용하여 일정 시간 간격으로 Redis 데이터를 디스크에 저장한다.
    • AOF(Append Only File) 방식 지원
    • AOF : Redis의 모든 쓰기 작업 로그를 기록, Redis를 재시작할 때 로그를 재실행하여 데이터를 복원한다.
    • 스냅샷과 AOF를 통해 데이터 손실을 방지하고 안정성을 높일 수 있으나, Redis의 성능을 약간 저하시키는 부분이 있기 때문에, 주기적인 스냅샷과 AOF 파일의 백업, 로그를 특정 크기 이상으로 허용하는 등 설정을 고려해야 한다.
  • 분산 환경 지원

    • 클러스터링을 통해 분산 환경에서도 사용 가능 하다.
    • Redis 클러스터링 : 여러 대의 Redis 서버를 하나의 클러스터로 묶어서 데이터를 분산 저장한다. 이를 통해 확장성과 가용성을 향상시킬 수 있다.

장점

  • 높은 성능
  • 데이터 구조 다양성
  • 데이터 복제 및 다양성
  • 데이터 안정성

단점

  • 메모리 제약
  • 단일 쓰레드
  • 디스크 I/O 성능 저하 위험

Redis 사용 사례

  • 좋아요 처리
  • 사용자 세션관리
  • 유저 인증 토큰 저장
  • 메시지 큐잉
  • 최근 검색 목록

질문

많은 양의 데이터를 처리하려면 어떻게 할까?

  • 데이터의 일부만 저장한다.
    • 캐시로 사용할 일부 데이터만 Redis에 저장하여 사용할 수 있다.
    • Redis에 저장할 데이터의 중요도에 따라 우선순위를 정하여 저장할 수 있다.

0개의 댓글