[java] Ehcache와 자료구조(Map, Set, List 등) 캐싱

Ehcache Logo

캐싱은 자주 사용되는 데이터를 저장하여 애플리케이션의 성능을 향상시키는 방법입니다. Ehcache는 Java 기반의 오픈 소스 캐싱 프레임워크로써, 다양한 자료구조를 캐싱하는데 사용될 수 있습니다.

Ehcache란?

Ehcache는 직렬화된 자바 객체를 메모리나 디스크에 저장하는 빠른, 유연하며 확장 가능한 캐시 솔루션입니다. Ehcache는 자바 직렬화 프레임워크를 사용하여 객체를 캐싱하므로, 캐시되는 자료구조에는 Map, Set, List 등이 포함될 수 있습니다.

Map 캐싱

Map은 Key-Value 형태의 자료구조입니다. Ehcache를 사용하여 Map을 캐싱하는 방법은 아래와 같습니다.

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

public class MapCachingExample {
    public static void main(String[] args) {
        // CacheManager 생성
        CacheManager cacheManager = CacheManager.newInstance();

        // Cache 생성
        Cache cache = new Cache("myMapCache", 1000, true, false, 60, 30);
        cacheManager.addCache(cache);

        // Cache에 데이터 저장
        cache.put(new Element("key1", "value1"));
        cache.put(new Element("key2", "value2"));
        cache.put(new Element("key3", "value3"));

        // Cache에서 데이터 조회
        Element element1 = cache.get("key1");
        Element element2 = cache.get("key2");
        Element element3 = cache.get("key3");

        System.out.println("Value of key1: " + element1.getObjectValue());
        System.out.println("Value of key2: " + element2.getObjectValue());
        System.out.println("Value of key3: " + element3.getObjectValue());

        // CacheManager 종료
        cacheManager.shutdown();
    }
}

위의 예제에서는 CacheManager를 생성한 후, Cache를 생성하여 사용하는 방법을 보여줍니다. Cache에 데이터를 저장하고 조회하는 과정을 간단하게 확인할 수 있습니다. 데이터는 Element 객체를 통해 저장되며, getObjectValue() 메서드를 사용하여 값을 얻을 수 있습니다.

Set 캐싱

Set은 중복되지 않는 자료구조로, Ehcache를 사용하여 Set을 캐싱하는 방법은 Map 캐싱과 유사합니다. Element 객체 대신 Set을 Cache에 저장하고 조회합니다.

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

import java.util.HashSet;
import java.util.Set;

public class SetCachingExample {
    public static void main(String[] args) {
        // CacheManager 생성
        CacheManager cacheManager = CacheManager.newInstance();

        // Cache 생성
        Cache cache = new Cache("mySetCache", 1000, true, false, 60, 30);
        cacheManager.addCache(cache);

        // Set 생성 및 데이터 추가
        Set<String> values = new HashSet<>();
        values.add("value1");
        values.add("value2");
        values.add("value3");

        // Cache에 데이터 저장
        cache.put(new Element("mySet", values));

        // Cache에서 데이터 조회
        Element element = cache.get("mySet");
        Set<String> cachedSet = (Set<String>) element.getObjectValue();

        for (String value : cachedSet) {
            System.out.println(value);
        }

        // CacheManager 종료
        cacheManager.shutdown();
    }
}

위의 예제에서는 HashSet을 사용하여 Set을 생성하고, Cache에 저장 및 조회하는 방법을 보여줍니다.

List 캐싱

List는 순차적으로 데이터를 저장하는 자료구조로써, Ehcache를 사용하여 List를 캐싱하는 방법은 Map 캐싱과 Set 캐싱과 마찬가지로 Element 객체에 List를 저장하고 조회합니다.

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

import java.util.ArrayList;
import java.util.List;

public class ListCachingExample {
    public static void main(String[] args) {
        // CacheManager 생성
        CacheManager cacheManager = CacheManager.newInstance();

        // Cache 생성
        Cache cache = new Cache("myListCache", 1000, true, false, 60, 30);
        cacheManager.addCache(cache);

        // List 생성 및 데이터 추가
        List<String> values = new ArrayList<>();
        values.add("value1");
        values.add("value2");
        values.add("value3");

        // Cache에 데이터 저장
        cache.put(new Element("myList", values));

        // Cache에서 데이터 조회
        Element element = cache.get("myList");
        List<String> cachedList = (List<String>) element.getObjectValue();

        for (String value : cachedList) {
            System.out.println(value);
        }

        // CacheManager 종료
        cacheManager.shutdown();
    }
}

위의 예제에서는 ArrayList를 사용하여 List를 생성하고, Cache에 저장 및 조회하는 방법을 보여줍니다.

결론

Ehcache는 Java 기반의 캐싱 프레임워크로서, 다양한 자료구조를 캐싱하는데 활용할 수 있습니다. Map, Set, List 등의 자료구조를 캐싱하여 애플리케이션의 성능을 향상시키고, 데이터 액세스 속도를 개선할 수 있습니다.

더 자세한 내용은 Ehcache 공식 문서를 참조하시기 바랍니다.