본문 바로가기

redis

캐시와 레디스

캐시

  • 캐시란 자주 사용하는 데이터를 미리 보관해둔 임시 장소를 의미
  • 캐시는 비교적 저장 공간이 적고 전체적인 비용이 비쌈(hdd, db에 비해)
  • 대신 빠른 IO를 통해 성능적 이점을 가져올 수 있음
  • 일반적으로 아래와 같은 특징들을 가지고 있는 데이터에 대해 캐시를 사용하면 좋음
    • 도중에 변경될 일이 없는 데이터베이스 조회 값(ex. Id)
    • 자주 호출되는 데이터

스프링 부트에서의 캐시

  • 스프링 부트에서 사용할 수 있는 캐시는 대부분 JSR-107을 따름
  • JSR이란?
    • java Specification Requests의 줄임말로, 자바 플랫폼에 대한 규격을 제안하거나 기술한것을 의미
    • 그 중 JSR-107은 JCache(Java Temporary Caching API)에 관한 내용
  • JSR-107을 따르는 캐시를 사용하면 어떤 구현체 캐시를 사용하는지에 관계없이 추상화를 지원

 

로컬 캐시와 글로벌 캐시

  • 로컬캐시
    • 로컬(해당 서버)에서만 사용하는 캐시
    • 외부 서버와 트랜잭션 비용이 들지 않기 때문에 속도가 빠름
    • 로컬에서만 사용하기 때문에 분산 서버의 구조에서 캐시를 공유하기 어려움
  • 글로벌 캐시
  • 여러 서버에서 접근할 수 있는 캐시 서버를 구축하여 이용하는 방식
  • 네트워크를 통해 데이터를 가져오는 트랜잭션 비용이 있기 때문에 로컬 캐시에 비해 상대적으로 느림
  • 별도의 서버로 운영되기 때문에 서버 간 데이터 공유에 용이함

Redis

  • Remote Dictionary Server의 약자로 '키-밸류' 구조의 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 관리 시스템
  • 레디스의 특징
  1. 메모리 기반 데이터 저장:
    • 레디스는 모든 데이터를 메모리에 저장하므로 매우 빠른 읽기 및 쓰기 작업을 제공합니다.
    • 영속성을 위해 디스크에 데이터를 저장할 수도 있지만, 기본적으로는 인메모리 데이터베이스로 사용됩니다.
  2. 다양한 데이터 구조:
    • 레디스는 단순한 문자열부터 복잡한 데이터 구조까지 다양한 데이터 유형을 지원합니다.
    • 문자열, 리스트, 해시, 세트, 정렬된 세트 등의 데이터 타입을 활용할 수 있습니다.
  3. 높은 성능:
    • 메모리 기반의 구조와 단일 스레드로 실행되는 특성으로 인해 레디스는 높은 처리량과 낮은 지연 시간을 제공합니다.
    • 비동기적인 특성으로 인해 레디스는 대용량 트랜잭션 및 동시 액세스에 강합니다.
  4. 오픈 소스 및 커뮤니티 지원:
    • 레디스는 오픈 소스 프로젝트이며, 활발한 커뮤니티에 의해 지원되고 있습니다.
    • 다양한 플랫폼과 언어에서 사용할 수 있는 클라이언트 라이브러리가 제공되어 개발자들이 쉽게 통합할 수 있습니다.
  5. 레플리케이션 및 고가용성:
    • 레디스는 마스터-슬레이브 레플리케이션을 지원하여 데이터의 복제를 가능케 합니다.
    • 고가용성을 위해 슬레이브 노드가 마스터 노드의 데이터를 복제하고 필요시에 마스터로 승격될 수 있습니다.
  6. 파이프라이닝(Pipelining):
    • 레디스는 여러 개의 명령을 한 번에 보내고 결과를 일괄적으로 받을 수 있는 파이프라이닝을 지원합니다.
    • 이를 통해 네트워크 오버헤드를 줄이고 효율적으로 작업을 수행할 수 있습니다.
  7. 트랜잭션 및 원자성:
    • 레디스는 다수의 명령을 하나의 트랜잭션으로 묶어 처리할 수 있습니다.
    • 원자성을 지원하며, 트랜잭션 중간에 오류가 발생하면 해당 트랜잭션은 롤백됩니다.
  8. Pub/Sub 메커니즘:
    • 발행-구독(Pub/Sub) 메커니즘을 통해 메시지 브로커의 역할을 수행할 수 있습니다.
    • 채널을 통해 메시지를 발행하고, 해당 채널에 구독한 클라이언트들이 메시지를 수신할 수 있습니다.

 

 

'redis' 카테고리의 다른 글

분산락을 적용해보자 (Redisson)  (0) 2024.02.11
레디스의 자료구조  (0) 2024.01.04
대기열을 이용한 선착순 쿠폰 발행  (0) 2024.01.04