-
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
'실무에서 배운 내용 정리' 카테고리의 다른 글
SpringBootServletInitializer 란 무엇이고 왜 상속받고 있는가? (0) 2020.08.14 Redis (0) 2019.08.09 상속보다 구성을 이용한 재사용 [1편] (3) 2018.12.21 실행 계획 (0) 2018.12.19 Clustered Index & Non-Clustered Index 차이 (0) 2018.12.17