TIL 2023/01/09 Redis

YEONGDO·2024년 1월 9일
0

Redis란?

  • 레디스(Redis)는 메모리 기반의 데이터 저장소이다. 키-밸류(key-value) 데이터 구조에 기반한 다양한 형태의 자료 구조를 제공하며, 데이터들을 저장할 수 있는 저장소이다. 최신 버전의 레디스는 PUB/SUB 형태의 기능을 제공하여 메세지를 전달할 수 있다. 즉, 데이터 저장 뿐만 아니라 다양한 목적으로 사용할 수 있다.레디스는 메모리에 데이터를 저장하기 때문에 저장 공간에 제약이 있어, 주로 보조 데이터 저장소로 사용한다. 이를 극복하기 위해 레디스 클러스터 기능을 제공하고 있어 저장 공간을 확장할 수 있다. 또한 저장된 데이터를 영구적으로 디스크에 저장할 수 있는 백업 기능을 제공하므로 애플리케이션의 주 저장소로도 사용할 수 있다. 또한 메모리에 데이터를 저장하기 때문에 빠른 처리 속도가 장점이다. 레디스 내부에서 명령어를 처리하는 부분은 싱글 스레드 아키텍처로 구현되어 있다. 멀티 스레드 아키텍처보다 구조가 단단하게 설계되어 여러 장점이 있다.

장점은 빠른 처리 속도, 단점은 저장 공간 제약

레디스의 특징

  • 영속성을 지원하는 인메모리 데이터 저장소
  • 읽기 성능 증대를 위한 서버 측 복제를 지원
  • 쓰기 성능 증대를 위한 클라이언트 측 샤딩(Sharding) 지원
  • 다양한 서비스에서 사용되며 검증된 기술
  • 문자열, 리스트, 해시, 셋, 정렬된 셋과 같은 다양한 데이터형을 지원. 메모리 저장소임에도 불구하고 많은 데이터형을 지원하므로 다양한 기능을 구현

캐시란?

  • 사용자에 입장에서 데이터를 더 빠르게, 더 효율적으로 액세스를 할 수 있는 임시 데이터 저장소를 뜻한다. 대부분의 어플리케이션에서 속도 향상을 위해 캐시를 사용한다고 한다.

캐싱 전략 (Caching Strategies)

  • 보통 레디스를 cache로 사용할 때 레디스를 어떻게 배치하냐에 따라 시스템 전체 성능에 큰 영향을 끼친다고 한다. 그래서 레디스를 어디에 어떻게 배치할 지에 대한 전략을 세워야 하는데! 이를, 캐싱 전략(Caching Strategies)이라고 한다. 캐싱 전략은 데이터의 유형과 해당 데이터에 대한 액세스 패턴을 잘 고려해서 선택해야 한다.

읽기 전략(Read Cache Strategy)

1. Look Aside 전략
일반적으로 많이 사용되는 전략

기본적으로 Cache에서 데이터를 확인하고, 여기 없다면 DB를 통해 조회해 오는 방식

  • 먼저 Cache에 데이터가 있는지 찾아봄
  • 없으면 다음으로 DB에 데이터를 찾아봄
  • DB에 데이터가 있는 경우 DB에서 가져온 데이터를 캐시에 저장
  • 이후 데이터를 사용자에게 전달

2. Read Through 전략
캐시에서만 데이터를 불러오는 전략

사실 위의 Look Aside와 비슷하지만, 다른점은 Cache에 데이터가 없을 때에 Server가 아니라, Cache가 DB에 데이터를 조회하여 업데이트 한 후에 그 데이터를 보여주는 방식

  • 먼저 Cache에 데이터가 있는지 찾아봄
  • 없으면 Cache가 DB에서 데이터를 찾아봄
  • DB에 데이터가 있는 경우 DB에서 가져온 데이터를 캐시에 저장
  • 캐시를 통해 이 데이터를 사용자에게 전달

쓰기 전략(Write Cache Strategy)

1. Write Back 전략
데이터를 삽입할 때에 이를 캐시에 보관해 두고, 일정 시간마다 DB에 저장시키는 방식

쓰기가 굉장히 빈번하게 일어나는 경우 사용하는 방식
-> 로그 데이터의 경우 굉장히 빈번하게 발생되고, 이를 DB에 매번 저장하기 그러니까 이 방식이 요긴하게 쓰인다고 한다.

  • Cache에 데이터를 저장시켜 준다.
  • 특정 시간마다 DB에 해당 데이터를 저장시킨다.
  • DB에 데이터가 저장되면 Cache에서는 이걸 지울수도 있고, 가지고 있을수도 있다.

2. Write Through 전략
DB와 Cache에 동시에 데이터를 저장하는 전략

  • 데이터 write시 Cache에 데이터 저장
  • Cache에서 이를 바로 DB에 저장(batch 아님)
  • Cache에는 데이터 저장되어 있음.

3. Write Around 전략
데이터를 DB에 저장하고, 캐시에 값이 없는 경우 저장시켜주는 방식

  • 데이터 write시 DB에 데이터 저장
  • 데이터 read시 Cache를 통해 찾아봄
  • Cache에 해당 데이터가 없는 경우 DB를 통해 찾고, 서버가 해당 데이터를 DB에 저장해준다.
profile
개발 블로그

0개의 댓글

관련 채용 정보