다른 개발 도구들/Redis

Redis와 Cache의 기본 개념

maeng0830 2023. 10. 30. 20:05

Redis

레디스(Redis: Remote Dictionary Server)란 인메모리 기반의 비관계형 데이터베이스이다.

  • 인메모리 기반이기 때문에 디스크 기반의 데이터베이스보다 속도가 빠르다.
  • 비관계형이기 때문에 저장될 데이터의 구조를 보다 유연하게 선택할 수 있다.

 

Redis의 특징

  • Key : Value 구조이기 때문에 쿼리를 사용할 필요가 없다.
  • Value의 구조로 String 이외에 List, Set, Sorted Set, Hash 등 Collection을 지원한다.
  • Single Thread이기 때문에 동시성 문제가 발생하지 않지만, 한 번에 하나의 명령만 처리할 수 있다(get, set 명령어의 경우 초당 10만 건 이상 처리할 수 있을 만큼 빠르다).
  • Redis Replication을 통해 데이터베이스를 Master/Replica 구조로 형성할 수 있다.
  • Redis Cluster를 통해 부하 분산을 위한 수평적 확장을 할 수 있다.
  • 외부 세션 저장소, 캐시 서버를 위해 사용될 수 있다.

 

Cache

캐시(cache)는 특정 요청에 대한 응답 데이터를 임시로 저장해두는 공간을 의미한다.

그리고 동일한 요청이 발생할 경우 API 또는 DB를 호출하지 않고, 캐시에 저장된 데이터를 반환하여 어플리케이션의 성능을 향상 시킬 수 있는 기능 중 하나이다. 

 

캐시의 사용 흐름은 look aside cache, write back으로 구분할 수 있다.

 

look aside cache

  1. 요청에 대한 응답 데이터가 캐시에 저장되어 있는지를 확인한다.
  2. 응답 데이터가 캐시에 저장되어 있다면, 캐시에 저장된 데이터를 반환한다.
  3. 만약 응답 데이터가 캐시에 저장되어있지 않다면, DB에서 데이터를 조회하여 캐시에 저장하고 데이터를 반환한다.

 

Write Back

  1. 서버는 DB에 반영할 모든 데이터를 캐시에 일정 시간 동안 저장한다.
  2. 일정 시간 동안 캐시에 저장된 모든 데이터를 DB에 반영한다.
  3. DB에 반영된 캐시의 데이터를 삭제한다.