> Java > java지도 시간 > 본문

Guava를 사용하여 Java에서 시간 기반 만료 캐시를 만드는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-21 07:02:16
원래의
342명이 탐색했습니다.

How to Create a Time-Based Expiring Cache in Java using Guava?

만료되는 키가 있는 Java 시간 기반 맵/캐시

Java에서는 시간 기반 캐싱을 처리하는 것이 어려울 수 있습니다. 키는 특정 기간이 지나면 만료될 수 있으며 만료된 항목을 자동으로 삭제해야 할 수도 있습니다.

이 문제에 대한 한 가지 해결책은 현재 Guava로 알려진 Google 컬렉션의 기능을 활용하는 것입니다. Guava의 MapMaker 클래스는 만료되는 키가 있는 지도를 생성하기 위한 편리한 메커니즘을 제공합니다.

ConcurrentMap<Key, Graph> graphs = new MapMaker()
   .concurrencyLevel(4)
   .softKeys()
   .weakValues()
   .maximumSize(10000)
   .expiration(10, TimeUnit.MINUTES)
   .makeComputingMap(
       new Function<Key, Graph>() {
         public Graph apply(Key key) {
           return createExpensiveGraph(key);
         }
       });
로그인 후 복사

MapMaker를 사용하면 다양한 매개변수를 지정할 수 있습니다.

  • concurrencyLevel: 지도 내 병렬 처리를 제어합니다.
  • softKeys: 가능하면 가비지 수집기가 키를 회수할 수 있도록 키를 약하게 보관해야 함을 나타냅니다.
  • weakValues: 소프트키와 유사하지만 값에 사용됩니다.
  • maximumSize: 지도의 최대 항목 수를 지정합니다.
  • expiration: 항목의 만료 기간을 설정합니다.

Guava는 이후 CacheBuilder를 위해 이러한 MapMaker 메소드 중 일부를 더 이상 사용하지 않습니다.

LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
    .maximumSize(10000)
    .expireAfterWrite(10, TimeUnit.MINUTES)
    .build(
        new CacheLoader<Key, Graph>() {
          public Graph load(Key key) throws AnyException {
            return createExpensiveGraph(key);
          }
        });
로그인 후 복사

CacheBuilder는 Java에서 시간 기반 캐싱을 관리하기 위해 더욱 간결하고 업데이트된 API를 제공합니다.

위 내용은 Guava를 사용하여 Java에서 시간 기반 만료 캐시를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿