캐시(캐시 히트, 캐시 미스)와 사용 구조

2023. 3. 13. 16:28카테고리 없음

  • Cache가 무엇일까 ? 

캐시(Cache)는 쉽게 말해 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소이다.

나중에 요청할 결과를 미리 저장해둔 후 빠르게 서비스 해줄 수 있다. 즉, 미리 결과를 저장해둔 값에 대해 요청이 오면 그 요청에 대해서 DB또는 API를 참조하지 않아도 된다. 

캐시는 저장공간 계층 구조 중 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다. 

  • 캐시 히트(Cache Hit)란?: CPU가 참조하려는 메모리가 캐시에 존재하고 있을 때
  • 캐시 미스(Cache Miss)란?: CPU가 참조하려는 메모리가 캐시에 존재하지 않을 때

 

 

  • 캐시의 사용 구조

1. Client가 Server에 데이터를 요청한다.

2. Server는 Cache에 해당 데이터가 있는지 확인한다.

3. 캐시에 데이터가 있는 경우, 데이터를 반환한다.

4. 캐시에 데이터가 없는 경우, 실제 DB에 데이터를 요청한다.

5~6. 가져온 데이터를 Cache에 저장한다.

7. 데이터를 Client에게 반환한다.

 

위의 흐름으로 Cache가 사용되는데,  동일한 흐름에서 어떻게 사용하냐에 따라서

look aside cache(lazy loading) / write back / write through으로 나뉜다.

 

  • look aside cache (lazy loading) : 캐시에 한 번 접근하여 데이터 유무 확인 후, 있으면 사용/없으면 실제 DB 또는 API호출하는 로직, 대부분의 Cache를 사용한 개발이 사용하는 프로세스

1. Cache에 Data 존재 유무 확인

2. Data가 있으면 Cache의 Data사용

3. Data가 없으면 Cache의 실제 DB Data사용

4. DB에서 가져온 Data를 Cache에 저장

 

  • write back : 데이터를 Cache에 모으고 일정한 주기 또는 크기가 되면 한 번에 처리하는 것

1. Data를 Cache에 저장

2. Cache에 있는 Data를 일정 기간동안 확인

3. 모여있는 Data를 DB에 저장

4. Cache에 있는 Data삭제

 

  • write through : 데이터 추가/업데이트 시 Cache와 주기억장치에 동시 업데이트하는 것

CPU가 데이터를 사용하면 Cache에 저장되게 되는데, 데이터가 캐시 됨과 동시에 주기억장치 또는 디스크로 기입되는 방식을 지원하는 구조의 캐시이다. 

캐시와 메모리에 동시 업데이트 되어 데이터 일관성을 유지할 수 있고, 데이터 로스가 발생하지 않는다.

주기억장치/보조기억장치에 데이터 기록 시 대기 시간 필요하여 성능 저하가 발생할 수 있다.

 

 

 

 

 

https://bit.ly/3JA9Vti

https://richong.tistory.com/95