속도 < 방향

Redis란? 본문

개발

Redis란?

import max 2024. 8. 16. 16:26

last update : 2024-08-16


개요

Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈소스 기반 비관계형 데이터베이스 관리 시스템(DBMS) 이다. 데이터베이스, 캐시, 메시지 브로커로 사용되며 인메모리 데이터 구조를 가졌다. Key, Value 저장소 중 가장 순위가 높다.

 

목적

Q. 데이터베이스가 있는데도 Redis라는 인메모리 데이터 구조 저장소를 사용하는 이유는?

A. 데이터베이스는 데이터를 물리 디스크에 직접 쓰기 때문에 서버가 다운되더라도 데이트가 손실되지 않지만, 매번 디스크에 접근해야 하기 때문에 사용자가 많아질수록 부하가 많아져서 느려질 수 있다. 초반에는 WEB-WAS-DB 구조로도 무리가 가지 않지만, 사용자가 많아질수록 DB 과부하 걸릴 확률이 높기 때문에 캐시 서버를 도입하는데 이 캐시서버가 Redis이다.

  • 캐시서버는 Lock aside cache 패턴과 Write Back 패턴이 존재한다.
    • Lock aside cache
      • 클라이언트가 데이터를 요청
      • 웹서버는 데이터가 존재하는지 Cache 서버에 먼저 확인
      • Cache 서버에 데이터가 있으면 DB에 데이터를 조회하지 않고 Cache 서버에 있는 결과값을 클라이언트에게 바로 반환
      • Cache 서버에 데이터가 없으면 DB에 데이터를 조회하며 Cache 서버에 저장하고 결과값을 클라이언트에게 반환
    • Write Back
      • 웹서버는 모든 데이터를 Cache 서버에 저장
      • Cache 서버에 특정 시간동안 데이터가 저장됨
      • Cache 서버에 있는 데이터를 DB에 저장
      • DB에 저장된 Cache 서버의 데이터를 삭제
      • insert 쿼리를 한번씩 500번 날리는것보다 쿼리 500개를 붙여서 한번에 날리는 것이 더 효율적이라는 원리이다. 들어오는 데이터들이 저장되기 전에 메모리 공간에 머무르는데 이때 서버에 장애가 발생한다면 데이터가 손실될 수 있다.

아키텍처

 

 

특징

  • Key, Value 구조이기 때문에 쿼리를 사용할 필요가 없다.
  • 데이터를 디스크에 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 빠르다.
  • String, Lists, Sets, Sorted Sets, Hashes 자료구조를 지원한다.
  • 싱글 스레드이므로 한번에 하나의 명령만 처리할 수 있다.

주의사항

  • 서버에 장애가 발생했을 경우 데이터 유실이 발생할 수 있으므로 운영 플랜이 필요하다.
  • 메모리 관리가 중요하다.
  • 싱글 스레드 특성상 한번에 하나의 명령만 처리하므로, 처리가 오래 걸리는 요청,명령은 피해야 한다.