Spring

[Spring] Java 데이터를 주기적으로 캐시할 수 있는 방법

IT-PAPA 2023. 3. 21. 06:30
728x90
반응형

Java에서 데이터를 주기적으로 캐시할 수 있는 방법으로는 ScheduledExecutorService를 사용하는 것이 일반적입니다. 

ScheduledExecutorService는 주어진 시간 간격으로 작업을 실행할 수 있는 자바 스레드 풀입니다.

아래는 ScheduledExecutorService를 사용하여 데이터를 주기적으로 캐시하는 예시 코드입니다.

import java.util.Map;
import java.util.concurrent.*;

public class CacheManager {

    private Map<String, String> cache;
    private ScheduledExecutorService scheduler;

    public CacheManager() {
        cache = new ConcurrentHashMap<>(); // ConcurrentHashMap을 사용하여 스레드 안전하게 맵을 관리합니다.
        scheduler = Executors.newSingleThreadScheduledExecutor(); // 스케줄러를 초기화합니다.
        scheduler.scheduleAtFixedRate(this::refreshCache, 0, 10, TimeUnit.MINUTES); // 10분마다 캐시를 갱신합니다.
    }

    private void refreshCache() {
        // 데이터를 가져와서 캐시를 갱신합니다.
        // 예를 들어, 데이터베이스에서 데이터를 가져오거나 외부 API를 호출할 수 있습니다.
        // 캐시에 데이터를 추가하는 방법은 put 메소드를 사용합니다.
        cache.put("key", "value");
    }

    public String get(String key) {
        return cache.get(key);
    }
}

 

위의 예시 코드에서 CacheManager 클래스는 cache 맵을 관리하고, ScheduledExecutorService를 사용하여 매 10분마다 refreshCache() 메소드를 실행하여 캐시를 갱신합니다. 

refreshCache() 메소드에서는 데이터를 가져와 캐시를 갱신합니다. 캐시에 데이터를 추가하는 방법은 put() 메소드를 사용합니다.

CacheManager 클래스에서 get() 메소드를 호출하면 맵에서 키에 해당하는 값을 반환합니다.

이렇게 캐시를 주기적으로 갱신하여 데이터를 더 빠르게 조회할 수 있습니다.

728x90
반응형
LIST