Heim >Java >javaLernprogramm >Wie erstelle ich mit Guava einen zeitbasierten ablaufenden Cache in Java?

Wie erstelle ich mit Guava einen zeitbasierten ablaufenden Cache in Java?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-21 07:02:16405Durchsuche

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

Zeitbasierte Java-Karte/Cache mit ablaufenden Schlüsseln

In Java kann der Umgang mit zeitbasiertem Caching eine Herausforderung sein. Schlüssel können nach einer bestimmten Zeitspanne ablaufen und eine automatische Löschung dieser abgelaufenen Einträge kann erforderlich werden.

Eine Lösung für dieses Problem besteht darin, die Leistungsfähigkeit von Google Collections, jetzt bekannt als Guava, zu nutzen. Die MapMaker-Klasse von Guava bietet einen praktischen Mechanismus zum Erstellen von Karten mit ablaufenden Schlüsseln.

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

Mit MapMaker können Sie verschiedene Parameter angeben:

  • concurrencyLevel: Steuert die Parallelität innerhalb der Karte.
  • SoftKeys: Gibt an, dass Tasten schwach gehalten werden sollen, damit der Garbage Collector sie nach Möglichkeit zurückgewinnen kann.
  • weakValues: Ähnlich wie SoftKeys, aber für Werte.
  • maximumSize: Gibt die maximale Anzahl von Einträgen in der Karte an.
  • Ablauf: Legt die Ablaufdauer für Einträge fest.

Guava hat seitdem einige dieser MapMaker-Methoden zugunsten von CacheBuilder veraltet:

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 bietet eine prägnantere und aktualisierte API für die Verwaltung von zeitbasiertem Caching in Java.

Das obige ist der detaillierte Inhalt vonWie erstelle ich mit Guava einen zeitbasierten ablaufenden Cache in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn