CS

캐시

YunH2 2023. 8. 16. 22:34

캐시

자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소

 

  • 저장 공간이 작지만 성능이 빠르다
  • 빠른 접근
  • 자주 쓰이는 데이터를 메모리에 저장했다가 사용 하는 것

 - 웹서버 기준 캐싱처리

  1. 웹에 요청 호출시 웹 브라우저로부터 하드 디스크의 파일 시스템에 있는 정적 리소스를 제공하는 웹 서버로 전달
  2. 웹 서버로 첫 요청시, 하드 디스크는 캐시를 확인하고 “캐시 미스(Cache miss)”를 발생
    추후 다시 요청받을 수 있다고 하면 캐시를 하드디스크에 저장
  3. 이후 요청부터는 캐시를 사용할 수 있는 경우 “캐시 히트(Cache hit)”를 발생
    미스가 발생하기 전까지 버퍼에서 캐시가 제공
    • Database 캐싱과 같은 경우 데이터베이스 쿼리는 데이터베이스 서버에서 수행되기 때문에 사용자가 급격히 증가함에 따라 속도가 매우 느려지고 부하가 몰릴 수 있다. 이런 쿼리들이 반복되면 그 결과값을 데이터베이스에 캐싱하여 응답시간 향상 및 서버 부하 감소가 가능하다.

 

- 응답 캐싱

  • 웹 서버는 응답을 캐싱하도록 구성하여 유사한 요청이 애플리케이션 호스트로 전달되지 않도록 가능
  • 애플리케이션 호스트는 비용이 높은 데이터베이스 쿼리나 자주 요청되는 파일들에 대한 응답을 캐시 가능
  • 웹 서버의 응답은 메모리에 캐싱하고, 애플리케이션 캐시는 로컬 인메모리에 저장하거나 캐시 서버 위에서 실행되는 레디스와 같은 인메모리 데이터베이스에 저장 가능

 

※레디스

인메모리 데이터 구조 스토어로서, 자주 사용되는 쿼리나 데이터를 빠르게 처리하기 위해 메모리(RAM)에 저장하는 기술
  • 키-값 쌍 형태의 데이터를 저장
    • 따라서 Redis는 비정형 데이터를 저장하는 비관계형 데이터베이스 관리 시스템
  • 데이터를 영구적으로 저장 가능
  • 디스크 스캐닝이 필요없어 매우 빠르다

RAM은 휘발성이 아닌가??

  • 이를 막기위한 백업 과정이 존재
  • snapshot
    • 특정 지점을 설정하고 디스크에 백업
  • AOF (Append Only File)
    • 명령(쿼리)들을 저장해두고 서버가 셧다운되면 재실행해서 다시 만들어 두는 것