ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Guava Cache 란 [1편]
    실무에서 배운 내용 정리 2018. 12. 24. 08:52

    캐시를 사용하는 이유

    응답 속도 향상


    어떤 데이터를 캐시 할까? 

    1. 자주 사용하면서도 변경이 자주 일어나지 않는 데이터 (즉 읽기는 많지만 쓰기는 적은 데이터)  

    => 변경이 자주 일어나게 되면 DB와 동기화 시키기 위해 캐시와 DB간의 트랜잭션이 자주 발생하여 오히려 성능 저하가 발생 

    2. 크기가 너무 크지 않은 데이터

    => 크기가 너무 크다면 메모리를 많이 소모하게 되서 애플리케이션의 메모리 성능에 악영향을 미칠 수 있음


    Guava Cache 란

    Google의 Guava Cache는 캐시를 쉽게 사용할 수 있도록 다양한 기능을 제공하는 오픈 소스 라이브러리

    간단한 코드를 통해 캐시 크기, 캐시 시간, 데이터 로딩 방법, 데이터 Refresh 방법 등을 제어할 수 있음

    * Goolge Guava 는 Apache Commons 에서 제공하지 않는 유용한 Utility성 기능들이 상당히 많다


    Guava에서 제공하는 2가지 타입의 캐시

    1. LoadingCache : 캐시 미스가 발생하면 자동으로 데이터 로드

    => LoadingCache.get(key)을 호출하면 key에 해당하는 데이터를 반환하는데, 데이터가 없다면 먼저 데이터 로딩을 수행한다.

    2. Cache : 데이터를 자동으로 로드 하지 X


    위의 두 타입 중에 LoadingCache를 많이 사용한다고 함


    동시성

    캐시 인스턴스는 내부적으로 ConcurrentHashMap과 유사하게 구현되어 있고 thread-safe을 보장한다. 

    동시에 여러 개의 쓰레드가 같은 key에 대해서 요청을 하더라도 CacheLoader의 load() 메서드는 각 key에 대해 한번만 호출된다. 

    (using the equivalent of putIfAbsent)



    Guava Cache를 적용한 예제는 2편에서 진행하겠다.




    참고 : http://ijbgo.tistory.com/10

    댓글

Designed by Tistory.