0Pricing
Spring Boot 4 Microservices & REST APIs · Leçon

Stratégies de mise en cache pour les microservices

Découvrez et mettez en œuvre des mécanismes de mise en cache comme Redis pour améliorer les performances des microservices.

Stratégies de mise en cache pour les microservices est une leçon Spring Boot 4 Microservices & REST APIs gratuite sur CoddyKit. Ceci est la leçon 5 sur 9. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Spring Boot 4 Microservices & REST APIs, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Spring Boot 4 Microservices & REST APIs comprend 9 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

Why Use Caching?

Imagine your microservice frequently fetches the same data from a database or another slow service. Each request means waiting, consuming resources, and slowing things down.

  • Performance Boost: Caching stores frequently accessed data closer to your application.
  • Reduced Load: Less pressure on databases and external services.
  • Faster Responses: Users experience quicker interactions.

Caching is a powerful technique for optimizing microservice performance.

Understanding Cache Basics

A cache is a temporary storage area that holds copies of data. When your application needs data, it first checks the cache.

  • Cache Hit: Data is found in the cache, retrieved quickly.
  • Cache Miss: Data is not in the cache, so it's fetched from the original source (e.g., database) and then stored in the cache for future use.

Think of it like remembering a phone number you dial often!

In-Memory vs. Distributed Cache

There are two main types of caches:

  • In-Memory Cache: Stored directly within a single application instance. Fast, but data is lost if the instance restarts, and not shared across multiple microservice instances.
  • Distributed Cache: A separate service (like Redis) that multiple microservice instances can connect to. Data is shared and persistent across instances, crucial for scalable microservices.

For microservices, distributed caching is usually preferred.

Introducing Redis for Caching

Redis (Remote Dictionary Server) is a popular, open-source, in-memory data store. It's often used as a distributed cache due to its speed and versatility.

  • Key-Value Store: Stores data as simple key-value pairs.
  • Blazingly Fast: Operations are very quick, often in microseconds.
  • Versatile: Supports various data structures like strings, hashes, lists, sets, and more.

It's an excellent choice for shared caching in a microservices architecture.

Spring Boot & Redis Setup

To integrate Redis with Spring Boot, you'll need the spring-boot-starter-data-redis dependency.

Add this to your pom.xml (Maven) or build.gradle (Gradle):

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

Spring Boot auto-configures Redis if it finds a running instance (e.g., via Docker) or connection properties in application.properties.

Spring's Caching Magic

Spring Boot provides a powerful Cache Abstraction layer. This means you can add caching to your application with simple annotations, without directly interacting with Redis code.

To enable caching in your Spring Boot application, simply add the @EnableCaching annotation to your main application class:

@SpringBootApplication
@EnableCaching
public class MyServiceApplication { ... }

This tells Spring to look for caching annotations on your methods.

Reading from Cache: @Cacheable

The @Cacheable annotation is used on methods whose results you want to cache. When a method annotated with @Cacheable is called:

  • Spring checks if the result for the given arguments is already in the cache.
  • If found, the cached value is returned (cache hit).
  • If not found, the method is executed, its result is stored in the cache, and then returned (cache miss).

Specify a value (cache name) and optionally a key expression.

Live Demo: Caching Concept

This simple Java program demonstrates the core idea behind caching. Notice how the 'database' call count increases only for new IDs, while repeated calls retrieve data instantly from the 'cache'.

import java.util.HashMap;
import java.util.Map;

// A simple in-memory cache
class SimpleProductCache {
    private Map<String, String> cache = new HashMap<>();

    public String get(String key) {
        return cache.get(key);
    }

    public void put(String key, String value) {
        cache.put(key, value);
    }

    public void remove(String key) {
        cache.remove(key);
    }
}

class ProductFetcher {
    private SimpleProductCache productCache;
    private int dbCallCount = 0;

    public ProductFetcher(SimpleProductCache cache) {
        this.productCache = cache;
    }

    public String fetchProductName(String productId) {
        // Try to get from cache first
        String cachedName = productCache.get(productId);
        if (cachedName != null) {
            System.out.println("--> Retrieved '" + productId + "' from cache.");
            return cachedName;
        }

        // If not in cache, simulate database call
        dbCallCount++;
        System.out.println("--> Fetching '" + productId + "' from database (Call #" + dbCallCount + ").");
        try {
            Thread.sleep(100); // Simulate delay
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
        String productName = "Product " + productId + " Name";

        // Store in cache
        productCache.put(productId, productName);
        return productName;
    }
}

public class Main {
    public static void main(String[] args) {
        SimpleProductCache cache = new SimpleProductCache();
        ProductFetcher fetcher = new ProductFetcher(cache);

        System.out.println("--- First requests ---");
        System.out.println(fetcher.fetchProductName("A1"));
        System.out.println(fetcher.fetchProductName("B2"));

        System.out.println("\n--- Repeat requests ---");
        System.out.println(fetcher.fetchProductName("A1")); // Should be from cache
        System.out.println(fetcher.fetchProductName("B2")); // Should be from cache

        System.out.println("\n--- New request ---");
        System.out.println(fetcher.fetchProductName("C3")); // Should be from DB
    }
}

Updating Cache: @CachePut

Sometimes you want to update the cache with the result of a method call, even if the data was already in the cache. This is where @CachePut comes in.

@CachePut(value = "products", key = "#product.id")
public Product updateProduct(Product product) {
// ... update product in database ...
return product;
}
  • Unlike @Cacheable, the method is always executed.
  • Its result is then placed into the cache.

Use it for methods that modify data and you want the cache to reflect the latest state.

Removing Stale Data: @CacheEvict

When data changes in your database, you need to remove the old, stale data from the cache. The @CacheEvict annotation handles this.

@CacheEvict(value = "products", key = "#id")
public void deleteProduct(String id) {
// ... delete product from database ...
}
  • When this method is called, the entry for the specified key in the products cache will be removed.
  • You can also use allEntries = true to clear the entire cache.

Use it after delete or update operations to ensure data consistency.

Cache Strategy Quiz

You are building a microservice that manages customer data. Which caching strategy would you use for the following scenarios?

Caching for Performance: Recap

Congratulations! You've learned about caching strategies for microservices.

  • Caching boosts performance and reduces database load.
  • Distributed caches like Redis are ideal for microservices.
  • Spring's Cache Abstraction simplifies caching with annotations.
  • Use @Cacheable for read-heavy operations.
  • Use @CachePut to update cached entries.
  • Use @CacheEvict to remove stale cache entries.

Mastering caching helps you build highly scalable and responsive microservices.

Questions Fréquemment Posées

La leçon « Stratégies de mise en cache pour les microservices » est-elle gratuite ?

Oui — le texte complet de « Stratégies de mise en cache pour les microservices » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Spring Boot 4 Microservices & REST APIs, passe à CoddyKit PRO. Le cours Spring Boot 4 Microservices & REST APIs comprend 9 leçons au total.

Qu'est-ce que j'apprendrai dans « Stratégies de mise en cache pour les microservices » ?

Découvrez et mettez en œuvre des mécanismes de mise en cache comme Redis pour améliorer les performances des microservices. Tu pratiques Spring Boot 4 Microservices & REST APIs avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Spring Boot 4 Microservices & REST APIs ?

Aucune expérience préalable n'est requise. Spring Boot 4 Microservices & REST APIs sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 5 sur 9.

Combien de temps prend la leçon « Stratégies de mise en cache pour les microservices » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Spring Boot 4 Microservices & REST APIs ?

Oui. Chaque leçon Spring Boot 4 Microservices & REST APIs inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Optimisation du débit des messages
  2. Traitement asynchrone avec WebFlux
  3. Optimiser la structure des données
  4. Mise à l’échelle des consommateurs et des producteurs
  5. Stratégies de mise en cache pour les microservices
  6. Stratégies de dénormalisation
  7. Partitionnement et réplication des bases de données
  8. Surveiller et déboguer la base de données
  9. Évaluation des performances de RabbitMQ
← Retour à Spring Boot 4 Microservices & REST APIs