ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Cache
    CS(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
Designed by Tistory.