Redis

김나영·2023년 7월 17일
0

Spring

목록 보기
38/38

Redis(Remote Dictionary Server)란?

  • Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템(DBMS) ==> 쿼리 사용 X

  • 데이터베이스, 캐시, 메세지 브로커로 사용

  • 인메모리 데이터 구조를 가진 저장소

  • 메모리에 데이터를 유지하면서 빠른 읽기와 쓰기 성능을 제공

    • 데이터를 디스크에 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에
  • String, Lists, Sets, Sorted Sets, Hashes 자료 구조 지원

주의점

  • 서버에 장애가 발생했을 경우 그에 대한 운영 플랜이 꼭 필요

    • 인메모리 데이터 저장소의 특성상, 서버에 장애가 발생했을 경우 데이터 유실이 발생할 수 있기 때문에
  • 메모리 관리가 중요

  • 싱글 쓰레드의 특성상 한 번에 하나의 명령만 처리 가능

  • 처리하는데 시간이 오래 걸리는 요청, 명령은 피해야함

Single Threaded

  • 한 번에 하나의 명령만 처리 가능 --> 중간에 처리 시간이 긴 명령어가 들어오면 그 뒤에 명령어들은 모두 앞에 있는 명령어가 처리될 때까지 대기가 필요

캐시 서버(Cache Server)

데이터 베이스가 있는데 왜 Redis라는 인메모리 데이터 구조 저장소를 사용할까?

  • 데이터 베이스는 데이터를 물리 디스크에 직접 쓰기 때문에 서버에 문제가 발생하여 다운되더라도 데이터가 손실되지 않음 --> 하지만 매번 디스크에 접근해야 하기 때문에 사용자가 많아질수록 부하가 많아져 느려점

  • 일반적으로 서비스 운영 초반이나 규모가 작고 사용자가 많지 않은 서비스의 경우에는 WEB - WAS - DB 구조로도 데이터 베이스에 무리가 가지 않음 --> 하지만 사용자가 늘어난다면? 데이터 베이스가 과부하 될 수 있기 때문에 캐시 서버를 도입하여 사용

  • 이 캐시 서버로 이용할 수 있는 것이 바로 Redis

  • 캐시

    • 한 번 읽어온 데이터를 임의의 공간에 저장하여 다음에 읽을 때는 빠르게 결과값을 받을 수 있도록 도와주는 공간
    • 같은 요청이 여러 번 들어오는 경우 매번 데이터 베이스를 거치는 것이 아니라 캐시 서버에서 첫 번째 요청 이후 저장된 결과값을 바로 내려주기 때문에 DB의 부하를 줄이고 서비스의 속도도 느려지지 않음

Look aside cache Vs Write Back

Look aside cache 패턴

  • 클라이언트가 데이터를 요청

  • 웹 서버는 데이터가 존재하는지 Cache 서버에 먼저 확인

  • Cache 서버에 데이터가 있으면 DB에 데이터를 조회하지 않고 Cache 서버에 있는 결과값을 클라이언트에게 바로 반환(Cache Hit)

  • Cache 서버에 데이터가 없으면 DB에 데이터를 조회하여 Cache 서버에 저장하고 결과값을 클라이언트에게 반환(Cache Miss)

Write Back

  • 웹 서버는 모든 데이터를 Cache 서버에 저장

  • Cache 서버에 특정 시간 동안 데이터가 저장

  • Cache 서버에 있는 데이터를 DB에 저장

  • DB에 저장된 Cache 서버의 데이터 삭제


참고

https://redis.io/
https://devlog-wjdrbs96.tistory.com/374
https://wildeveloperetrain.tistory.com/21
https://aws.amazon.com/ko/elasticache/what-is-redis/

1개의 댓글

comment-user-thumbnail
2023년 7월 17일

훌륭한 글이네요. 감사합니다.

답글 달기