-
CacheCS(ComputerScience) 2021. 2. 4. 15:38
안녕하세요. 그린입니다!
이번 포스팅에서는 Cache (캐시)에 대해 알아보겠습니다.✍️
1. 캐시란 ??
: 캐시(cache)는 데이터나 값을 미리 복사해 놓는 임시 저장소를 말한다.
-. 역할 및 장점
: 기존방식으로는 데이터 접근 시간이 오래 걸리거나 값을 다시 계산하는 시간을 절약할때 사용 (시간을 줄임!),
캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다.
-. 단점
: 업데이트를 바로바로 해주지 않기에 즉각성이 떨어짐
2. 캐시를 구분하는 기준
-. 클라이언트 / 서버
: 클라이언트와 서버의 캐시는 구분된다.
클라이언트는 클라이언트만의 local에 저장할 수 있는 캐시가 있으며,
서버는 여러 클라이언트의 요청에 대해 저장할 수 있는 캐시가 있다.
(서버에서도 부하를 줄이기 위해 서버에 자주하는 요청을 캐싱해둠)
-. 저장장소
1) 메모리
2) 디스크: 앱 내부 디스크(UserDefaults, CoreData), 앱 외부 디스크
-. 데이터가 저장되는 계층에 따른 구분
: L1, L2, L3 캐시 (비용, 속도, 용량에 따라)
-. 읽기 및 쓰기에 따른 구분
1) 읽기 캐시: 한번 읽어들인 데이터를 캐시에 저장 후 추후 Read시 사용
2) 쓰기 캐시: 읽기 캐시의 기능뿐 아니라 Write시 디스크에 바로 올리지 않고 캐시에 임시로 저장 후 추후
캐시 데이터를 모아 한번에 디스크에 저장 (매번 변경 시 디스크에 여러번 그때그때 저장할 필요가 없다.)
3. 캐시 운용 정책
1) 보안성 (캐시 접근 및 저장 관련)
2) 데이터 수명
3) 캐시 교체 정책 (Cache Replacement Policy)
-. 데이터 사용시간에 따른 교체 (사용시간 작은것 부터..)
-. LRU, FIFO, LFU 구조에 따라 교체
-. Random, NUR, Optimal 등등...
4) 저장하는 시점에 따른 정책
-. Write Through: 쓰기 요청 시 즉시 저장
-. Write Back: 쓰기 요청 시 캐시에서만 이뤄지고 바로 저장되지 않고 추후 캐시에서 해당 사항이 끝날때 최종으로 한번에 변경사항 저장
4. iOS에서 캐싱 방법
1) Memory Cache: NSCache 기능 활용 --> 기기 종료 시 캐시 데이터가 날아간다.
2) Disk Cache: 기기 안에 저장되어 있지만 구현에 따라 앱 삭제 시 데이터 삭제 / 보존 할 수 있다. (UserDefaults, CoreData)
-. FileManager를 사용하여 Cache Directory에 접근하여 자체 디렉터리를 만들어 관리
-. ETag를 이용하여 디스크 캐시를 활용할 수 있다. (서버에서 해당 기능 지원할 시)
이렇게 캐시에 대해 알아보았습니다.
서버에서 이미지를 불러와 저장하고 하는 구현을 할 때 꼭 캐시 데이터에 대한 이해가 필요합니다.
또한 흔히 많이 사용하시는 카카오톡도 캐시를 적극 활용한 부분이라 생각됩니다. 채팅 데이터에 대해 곰곰히 생각해보면
캐시 데이터에 대해 조금 더 잘 이해할 수 있을거라 생각합니다.
멀고도 어려운 컴퓨터와 네트워크 세상.... 차근차근 하나씩 격파해 나가도록 하죠!
감사합니다😁
'CS(ComputerScience)' 카테고리의 다른 글
우선순위 큐 (2) 2021.05.17 멀티프로세스 VS 멀티스레드 (0) 2021.04.30 HTTP & TCP/IP (0) 2021.01.18 OS와 Process (0) 2021.01.05 자료구조와 알고리즘 (0) 2020.12.08