캐시, Redis 정리

Seung jun Cha·2023년 5월 15일
0

1. 캐시

  • 데이터나 결과를 미리 저장해두는 저장소를 말한다. 주로 데이터나 결과를 더 빠르게 접근하고 처리하기 위해 사용됩니다.

1-1 과정

  • 클라이언트가 웹 서버에 요청을 보내면, 웹 서버는 데이터를 DB에서 가져 오기 전에 캐시에 데이터가 있는지 확인하고, 있다면 바로 클라이언트에게 저장된 데이터를 반환한다. 이를 Cache Hit라고 한다.

  • 반대로 캐시 서버에 데이터가 없으면 DB에 데이터를 요청하여 원하는 데이터를 조회한 후 그 데이터를 클라이언트에게 제공하는데, 이를 Cache Miss라고 한다.

1-2 장점

  1. 빠른 접근 속도: 캐시는 기존 데이터를 미리 저장해두기 때문에 접근 속도가 빠릅니다. 따라서 자주 사용되는 데이터나 결과를 캐시에 저장하면 빠른 응답 속도를 제공할 수 있습니다.

  2. 서버 부하 감소: 캐시를 사용하면 데이터를 매번 계산하거나 조회하지 않아도 되기 때문에 서버의 부하를 줄일 수 있습니다.

  3. 대역폭 절약: 정적 리소스를 캐시에 저장하면 사용자가 같은 페이지를 여러 번 방문할 때 서버로부터 해당 리소스를 다시 받아오지 않아도 되므로 대역폭을 절약할 수 있습니다.

2. Redis

  • 오픈소스 기반의 비관계형 데이터베이스모든 데이터를 메모리에 저장하고 조회하는 키-값 기반의 NoSQL 인메모리 데이터 저장소이다. 쿼리를 날리지 않고 key값으로 결과를 가져올 수 있으므로 빠르다. DB, Cache, Message Queue, Shared Memory 용도로 사용될 수 있다. 주로 Cache 서버를 구현할 때 많이 쓴다.

  • redis에 캐싱하는 데이터는 update가 자주 일어나지 않는 데이터가 좋다. DB의 데이터가 업데이트 될 때마다 캐시데이터도 업데이트 해주어야하기 때문이다. redis 사용시 레디스에서 문제가 생겼을 때 발생하는 failover(장애)를 고려해야한다.

2-1 특징

영속성 보장, 다양한 자료구조 지원, 싱글스레드

  • Redis는 영속성을 보장하기 위해 데이터를 디스크에 저장할 수 있다. 서버가 내려가더라도 디스크에 저장된 데이터를 읽어서 메모리에 로딩한다. 데이터를 디스크에 저장하는 방식은 크게 두 가지가 있다.

    • RDB(Snapshotting) 방식 : 순간적으로 메모리에 있는 내용 전체를 디스크에 옮겨 담는 방식
    • AOF(Append On File) 방식 : Redis의 모든 write/update 연산 자체를 모두 log 파일에 기록하는 형태
  • String, list, hash, set, sorted set 등의 다양한 자료 구조를 지원한다.

  • 싱글 스레드 사용

    • 레디스는 싱글 스레드를 사용하기 때문에 연산을 하나씩 처리하여 Thread Safe하다

    • Thread Safe : 다중 스레드 환경에서도 안전하게 동작한다는 뜻으로, 여러 개의 스레드가 동시에 해당 객체 또는 자원에 접근하고 수정해도 예상대로 동작하고 데이터의 무결성이 보장되는 상태를 말합니다.

2-2 과정

  • 클라이언트가 웹 서버에 요청을 보내면, 웹 서버는 데이터를 DB에서 가져 오기 전에 캐시에 데이터가 있는지 확인하고, 있다면 바로 클라이언트에게 저장된 데이터를 반환한다. 이를 Cache Hit라고 한다.
    반대로 캐시 서버에 데이터가 없으면 DB에 데이터를 요청하여 원하는 데이터를 조회한 후 그 데이터를 클라이언트에게 제공하는데, 이를 Cache Miss라고 한다.

3. Memcached

  • 여러 대의 서버에 데이터를 복제해서 분산하여 저장하고, 데이터에 접근할 때 이를 분산하여 가져오는 방식을 사용합니다. 이렇게 하면 데이터의 로드 밸런싱과 가용성을 보장할 수 있습니다. 데이터를 메모리에만 저장하며 문자열 형태만 지원합니다.

https://steady-coding.tistory.com/586

0개의 댓글