Spring Cache 개요

개요

  • Cache를 사용하면 자주 사용되는 리소스가 존재할 시에 리소스를 얻은 후 캐시 저장소에 만료시간과 함게 저장하고 사용자가 조회를 요청할 때 마다 만료시간 이건짜니는 캐시 저장소에 있는 리소스를 사용함으로써 조회 성능을 대폭 향상 시킬 수 있다.
  • 일반적으로 동일한 리소스 대해 비번한 Select로 발생되는 DBMS 과부하를 줄이고자 사용한다.

Spring Cache

  • 스프링은 캐시 추상화(Cache Abstraction)을 통해 편리한 캐싱 기능을 지원하고 있다.
    • Spring Cache Abstration이란? 사용자는 캐시 구현에 대해 신경 쓸 필요 없이 퍼블릭 인터페이스를 쉽게 캐싱 기능을 사용할 수 있는 것을 말한다.
    • 더 구체적으로 말하자면, 캐싱이 필요한 비즈니스 로직에서 EhCache, Redis 등 캐싱 인프라스트럭쳐에 의존하지 않고 추상화된 퍼블릭 인터페이스로 캐싱을 할 수 있다. 이는 만약 EhCache로 사용중이다가 Redis로 변경되더라도 비즈니스 로직에는 영향을 주지 않는다는 장점을 말한다.
  • Spring Legacy에서는 SimpleCacheManager를 통해 빈을 CacheManager bean을 생성하여, Spring Boot에서는 spring-boot-starter-cache 아티팩트를 추가하여 캐싱 기능을 사용할 수 있다.
  • 별도의 3rd-party 모듈이 없다면 Local Memory에 저장되는 ConcurrentMap 기반 ConcurrentMapCacheManager가 Bean으로 자동 등록된다. 3rd-party 모듈인 EHCache, Redis 등의 의존성을 추가하게되면 EHCacheCacheManager 또는 RedisCacheManager등을 Bean으로 등록되어 사용할 수 있다.