Maison  >  Article  >  Java  >  Comment créer un cache expirant en fonction du temps en Java à l'aide de Guava ?

Comment créer un cache expirant en fonction du temps en Java à l'aide de Guava ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-21 07:02:16339parcourir

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

Carte/cache temporel Java avec clés expirantes

En Java, la gestion de la mise en cache temporelle peut être un défi. Les clés peuvent expirer après une certaine durée, et la purge automatique de ces entrées expirées peut devenir nécessaire.

Une solution à ce problème consiste à exploiter la puissance de Google Collections, désormais connue sous le nom de Guava. La classe MapMaker de Guava fournit un mécanisme pratique pour créer des cartes avec des clés expirant.

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);
         }
       });

Avec MapMaker, vous pouvez spécifier divers paramètres :

  • concurrencyLevel : contrôle le parallélisme au sein de la carte.
  • softKeys : indique que les clés doivent être tenues faiblement, permettant au garbage collector de les récupérer lorsque cela est possible.
  • weakValues : similaire aux softKeys, mais pour les valeurs.
  • maximumSize : Spécifie le nombre maximum d'entrées dans la carte.
  • expiration : définit la durée d'expiration des entrées.

Guava a depuis déprécié certaines de ces méthodes MapMaker au profit de CacheBuilder :

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 propose une API plus concise et mise à jour pour gérer la mise en cache temporelle en Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn