Java/일반

EHCache

창욱씨 2020. 5. 13. 14:30

1. EHCache란

 EHCache란 Java의 대표적인 캐시 엔진 중의 하나입니다.


특징

  • 경량의 빠른 캐시 엔진
  • 메모리, 디스크 저장 지원, 멀티 CPU의 동시 접근에 튜닝
  • 동기, 비동기 복사, 피어 자동 발견

사용 이유

  • Java 메소드에 캐싱을 적용함으로써 캐시에 보관된 정보로 메소드의 실행 횟수를 줄여줍니다.
  • 대상 메소드가 실행될 때마다 추상화가 해당 메소드가 같은 인자로 이미 실행되었는지 확인하는 캐싱 동작을 적용합니다.
  • 해당 데이터가 존재한다면 실제 메소드를 실행하지 않고 결과를 반환하고 존재한다면 메소드를 실행하고 그 결과를 캐싱한 후, 사용자에게 반환해서 다음 번 호출 시에 사용할 수 있게 합니다.

2. EHCache 사용 방법

Maven 의존성 추가

<dependency> 
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache</artifactId> 
    <version>${ehcache.version}</version> 
</dependency>

CacheManager를 빈으로 등록

<!-- cacheManager 설정 -->
    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
        <property name="cacheManager" ref="ehcache"/>
    </bean> <!-- ehcache 설정 -->
    <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
        <property name="configLocation" value="classpath:ehcache.xml"/>
    </bean>

Encache.xml 작성

<?xml version="1.0" encoding="UTF-8"?>
    <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false">
        <defaultCache eternal="false" maxElementsInMemory="50" overflowToDisk="false" diskPersistent="false"
                      timeToIdleSeconds="0" timeToLiveSeconds="3" memoryStoreEvictionPolicy="LRU"/>
        <cache name="sampleCache" eternal="false" maxElementsInMemory="100" overflowToDisk="false"
               diskPersistent="false" timeToIdleSeconds="0" timeToLiveSeconds="10" memoryStoreEvictionPolicy="LRU"/>
    </ehcache>

엘리먼트와 속성

어노테이션

  • @Cacheable: 캐시할 수 있는 메소드를 지정
  • @CachePut: 메소드 실행에 영향을 주지 않고 캐시를 갱신
  • @CacheEvict: 캐시에서 오래되거나 사용하지 않는 데이터를 제거하는 메소드를 지정, void 반환형에서만 사용 가능
  • @Caching 어노테이션을 여러 개 사용할 때 사용
728x90