Series/실전!

Spring cache 는 어떤 provider 를 사용하는 것이 좋을까?

Hyunec 2023. 4. 2. 00:30

회사에서 local cache 를 사용할 일이 생겼습니다.
동료분이 guava 를 알려주셨고 처음 들어보았기에 일단 baeldung 을 검색해 보았는데 조금 이상했습니다.

https://www.baeldung.com/guava-cache

캐시를 사용할 때 익히 쓰던 @Cacheable 어노테이션이 보이지 않았습니다.
그래서 익숙하던 ehcache 를 검색해 보면서 비교해 봤습니다.

 

 

The difference between Ehcache and Guava Cache - actorsfit

Recently, I have been doing some cache transformation scenarios, and there are some experience summaries as follows: Cached version: Ehcache: 2.8.3 Guava: 17.0 Ehcache supports persistence to the local disk, but Guava cannot;Ehcache has a ready-made cluste

blog.actorsfit.com

  • guava 는 가볍습니다.
  • guava 는 내부적으로 ConCurrentHashMap 을 사용하고 있습니다.

읽다 보니 동시성은 안전하지만 왠지 성능이 떨어질 것 같다는 직감이 들었습니다.
그래서 몇 개의 문서를 찾아본 결과 guava 는 읽기보다는 쓰기 작업이 중요한 상황에 쓰면 좋다는 내용을 찾았습니다.

 

여전히 꺼림칙한 느낌이 있어서 좀 더 찾아보었더니 guava 는 deprecated 되었습니다!
심지어 꽤 오래 전인 1.5.1.RELEASE 에서였습니다.

 

31. Caching

The Spring Framework provides support for transparently adding caching to an application. At its core, the abstraction applies caching to methods, reducing thus the number of executions based on the information available in the cache. The caching logic is

docs.spring.io

 

다시 처음으로 돌아가서 조사하던 중 caffeine 캐시를 찾았습니다.
ehcache 가 익숙하긴 하지만 기능이 많고 무거웠기에 가벼운 caffeine 을 사용하기로 최종 결정했습니다.

https://www.baeldung.com/spring-boot-caffeine-cache

 

IO

The Spring Framework provides support for transparently adding caching to an application. At its core, the abstraction applies caching to methods, thus reducing the number of executions based on the information available in the cache. The caching logic is

docs.spring.io