Server And Configuration Management/cache

[Cache] Redis란 무엇일까?

세기루민 2024. 11. 20. 22:27
728x90

회사 업무 중 트래픽이 많아 대용량 처리를 하는 서비스가 있다.

해당 서비스의 경우 트래픽도 트래픽이지만 성능이 빠른 서비스를 제공하기 위해 캐시를 사용하는데

사용중인 캐시가 바로 Redis이다.

이에 따라 Redis 특징과 캐시가 무엇인지에 대해서 간단히 작성해보려고 한다.

 

캐시란?

  • 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 저장소를 의미

Redis?

  • 인메모리 DB처럼 모든 데이터를 메모리에 저장하고 조회할 수 있는 캐시 시스템
    • 메모리 키 값 데이터 구조를 저장하는 저장소

Redis 사용 이유?

  • 다양한 장점들이 존재하지만 다양한 자료 구조를 지원
  • 다양한 자료 구조를 지원함에 따라 개발 유연성을 제공
    • 즉 개발 편리성과 생산성은 올라가며 난이도는 낮아짐
  • DB에 직접 접근하여 저장 및 조회하는 처리 비용(디스크에 직접 접근 및 적제)보다
    Redis에서 더 빠르게 조회하는 처리 비용이 효율적임

Redis 특징

  • NoSQL로 key-value 타입을 가짐
  • 영속성을 지원하는 인메모리 DB
  • 읽기/쓰기 성능 증대를 위해 서버 복제 지원과 샤딩 지원 가능
  • 인메모리 저장소임에도 불구하고 다양한 기능을 구현

Redis 영속성

  • 레디스는 지속성을 보장하기 위해 데이터를 DISK에 저장 가능
  • 서버가 내려가더라도 DISK에 저장된 데이터를 읽어서 메모리 로딩
    • 저장 방식은 2가지
      • RDB 방식 : 순간적으로 메모리에 있는 내용을 DISK에 전체 옮겨 담는 방식
      • AOF 방식 : Redis의 모든 wirte/update 연산 자체를 모두 log 파일에 기록하는 형태

Redis 단점

  • 영속성에 따른 성능 저하
    • Redis는 기본적으로 메모리 내에서 데이터를 처리하지만, 데이터를 디스크에 영속적으로 저장(RDB, AOF 방식을 이용)이 가능한데, 이는 디스크에 저장하도록 설정함에 따라 성능에 영향과 데이터 복구 시간 소요가 발생
  • 단일 스레드 처리로 인한 병목 현상 발생
    • Redis는 기본적으로 단일 스레드에서 작동하기 때문에 CPU 코어를 최대한 활용하지 못할 경우 병목 현상이 발생할 수 있음
  • 데이터 구조의 제약 존재
    • List, Set, Hash와 같이 다양한 구조를 제공하지만 Join과 같은 구조에 대해서는 지원하지 않음
    • 이는 Redis가 처리할 수 있는 데이터 구조가 한계가 있다는 의미
  • 클러스터 관리가 복잡함
    • Redis의 클러스터 모드에서 여러 노드로 분산하여 데이터 관리가 가능하지만 분산된 노드가 많아질 경우 복잡성이 올라감
    • 또한 Redis 클러스터의 장애가 발생 시 노드가 많을 경우 복구 시간이 오래걸림
728x90