Caffeine Java : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Caffeine pour Java : un cache en mémoire haute performance

Qu'est-ce que Caffeine et pourquoi l'utiliser ?

Caffeine est une bibliothèque de cache en mémoire haute performance écrite en Java. Créée par Ben Manes, elle est l'une des implémentations de cache les plus rapides pour la JVM. Caffeine est conçue pour répondre aux exigences modernes du multithreading et offre une API riche pour gérer le cycle de vie des objets dans le cache.

Pourquoi utiliser Caffeine ? Dans toute application manipulant des données, il arrive souvent que les mêmes données soient demandées à plusieurs reprises. Au lieu d'exécuter à chaque fois une opération coûteuse (requête en base de données, appel d'API externe, calculs complexes), vous pouvez stocker le résultat dans un cache. Caffeine le fait de manière extrêmement efficace grâce à l'algorithme W-TinyLFU (Window Tiny Least Frequently Used), qui assure une grande précision d'éviction des éléments avec un minimum de surcharge.

Cette bibliothèque est activement utilisée dans de grands projets comme Spring Framework (depuis la version 5.0), où elle constitue l'implémentation de cache par défaut. Caffeine prend en charge le chargement asynchrone, la mise à jour automatique des entrées, les statistiques et de nombreuses stratégies d'éviction (par temps, par taille, par références).

Installation

Caffeine est distribuée via Maven Central. Pour l'utiliser, ajoutez la dépendance dans votre fichier pom.xml (Maven) ou build.gradle (Gradle).

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'

Pour obtenir la dernière version, consultez Maven Central.

Démarrage rapide

Un exemple minimal de création et d'utilisation d'un cache Caffeine :

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. Créer un cache avec une taille maximale de 100 éléments
        //    et une durée de vie de 10 minutes après le dernier accès
        Cache<String, String> cache = Caffeine.newBuilder()
                .maximumSize(100)
                .expireAfterAccess(10, TimeUnit.MINUTES)
                .build();

        // 2. Ajouter une valeur
        cache.put("key1", "Bonjour, Caffeine !");

        // 3. Récupérer une valeur
        String value = cache.getIfPresent("key1");
        System.out.println(value); // Affiche : Bonjour, Caffeine !

        // 4. Récupérer une valeur avec une fonction de chargement (si la clé n'existe pas)
        String loadedValue = cache.get("key2", k -> "Chargé : " + k);
        System.out.println(loadedValue); // Affiche : Chargé : key2
    }
}

Méthodes et classes principales

Examinons les classes et méthodes clés de Caffeine. La classe principale pour la configuration est Caffeine, et pour travailler avec le cache, ce sont Cache, LoadingCache et AsyncCache.

1. Caffeine.newBuilder()

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

Fonction : Crée un nouveau builder pour configurer le cache. Permet de définir tous les paramètres

Recommendations