Caffeine Java: Vollständiges Tutorial mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Caffeine für Java: Hochleistungs-Cache im Arbeitsspeicher

Was ist Caffeine und warum braucht man es?

Caffeine ist eine hochperformante In-Memory-Caching-Bibliothek für Java, entwickelt von Ben Manes. Sie gilt als eine der schnellsten Cache-Implementierungen für die JVM. Caffeine wurde speziell für moderne Multithreading-Anforderungen entwickelt und bietet eine umfangreiche API zur Verwaltung des Lebenszyklus von Objekten im Cache.

Warum Caffeine? In jeder datenverarbeitenden Anwendung werden dieselben Daten oft mehrfach angefordert. Anstatt jedes Mal eine teure Operation auszuführen (Datenbankabfrage, externer API-Aufruf, komplexe Berechnungen), können Sie das Ergebnis im Cache speichern. Caffeine erledigt dies äußerst effizient mit dem W-TinyLFU-Algorithmus (Window Tiny Least Frequently Used), der eine hohe Treffergenauigkeit bei minimalem Overhead bietet.

Die Bibliothek wird in großen Projekten wie dem Spring Framework (ab Version 5.0) als Standard-Cache-Implementierung eingesetzt. Caffeine unterstützt asynchrones Laden, automatische Aktualisierung von Einträgen, Statistiken und verschiedene Verdrängungsstrategien (zeitbasiert, größenbasiert, referenzbasiert).

Installation

Caffeine wird über Maven Central vertrieben. Fügen Sie die Abhängigkeit zu Ihrer pom.xml (Maven) oder build.gradle (Gradle) hinzu.

Maven

<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
    <version>3.1.8</version>
</dependency>

Gradle

implementation 'com.github.ben-manes.caffeine:caffeine:3.1.8'

Die aktuelle Version finden Sie auf Maven Central.

Schnellstart

Ein minimales Beispiel zur Erstellung und Nutzung eines Caffeine-Caches:

import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;

import java.util.concurrent.TimeUnit;

public class QuickStart {
    public static void main(String[] args) {
        // 1. Cache mit max. 100 Einträgen und 10 Minuten Lebensdauer nach letztem Zugriff
        Cache<String, String> cache = Caffeine.newBuilder()
                .maximumSize(100)
                .expireAfterAccess(10, TimeUnit.MINUTES)
                .build();

        // 2. Wert speichern
        cache.put("key1", "Hallo, Caffeine!");

        // 3. Wert abrufen
        String value = cache.getIfPresent("key1");
        System.out.println(value); // Ausgabe: Hallo, Caffeine!

        // 4. Wert mit Lade-Funktion abrufen (falls Schlüssel nicht existiert)
        String loadedValue = cache.get("key2", k -> "Geladen: " + k);
        System.out.println(loadedValue); // Ausgabe: Geladen: key2
    }
}

Wichtige Methoden und Klassen

Hier sind die zentralen Klassen und Methoden von Caffeine. Die Hauptklasse für die Konfiguration ist Caffeine, für die Cache-Nutzung stehen Cache, LoadingCache und AsyncCache zur Verfügung.

1. Caffeine.newBuilder()

Signatur: public static Caffeine<K, V> newBuilder()

Funktion: Erstellt einen neuen Builder zur Konfiguration des Caches. Hiermit lassen sich alle Parameter

Empfehlungen