AI Briefing

Spring 로컬 캐시 라이브러리 Ehcache

·2020.06.22 11:27

Ehcache 3로 Spring 로컬 캐시를 붙이고 @Cacheable로 30초 캐싱을 구현한다.

Ehcache는 Spring에서 간단히 쓰는 Java 기반 오픈소스 캐시 라이브러리로, Redis나 memcached처럼 별도 데몬을 두지 않고 애플리케이션 내부에서 동작한다. 덕분에 네트워크 지연이나 단절 이슈를 피할 수 있고, 서버와 라이프사이클을 함께 가져가 사용이 쉽다.

이 글은 Ehcache 3를 기준으로 설명하며, 2.x와 달리 JSR-107(javax.cache) 호환성과 offheap 저장 공간을 제공한다고 짚는다. Maven에서는 org.ehcache:ehcache, javax.cache:cache-api, spring-boot-starter-cache를 추가하고, resources 아래에 ehcache.xml을 둔 뒤 spring.cache.jcache.config=classpath:ehcache.xml로 연결한다.

Spring 쪽 설정은 메인 클래스에 @EnableCaching을 붙이면 끝난다. 이후에는 컨트롤러에서 서비스 메서드를 호출하고, 서비스 메서드에는 @Cacheable을 붙여 캐시를 적용한다.

@Cacheable의 핵심 인자는 다음과 같다.

  • value: ehcache.xml에서 정의한 캐시 이름(alias)
  • key: 캐시를 구분하는 키
  • condition: 캐시 적용 조건

예시에서는 condition#number > 10으로 두어, 매개변수 Long number가 10보다 큰 경우에만 캐시가 동작하도록 한다. 테스트 결과, 같은 값에 대해 30초 동안은 캐시가 유지되어 서비스 로그가 다시 찍히지 않고, 시간이 지난 뒤에만 다시 실행되는 것을 확인한다.

추가로 Ehcache 3에서 offheap 또는 disk에 데이터를 저장하려면 캐시할 객체가 Serializable을 구현해야 한다고 설명한다. JVM 힙 밖의 메모리에 저장하려면 직렬화가 필요하기 때문이다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.