Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Annotations pour Travailler avec le Cache | Mise en Cache avec Redis et Spring Boot
Introduction à Redis

bookAnnotations pour Travailler avec le Cache

Au lieu de gérer manuellement la mise en cache, il est possible d'utiliser des annotations qui automatisent ce processus. Examinons les annotations disponibles.

Mise en cache des résultats

L'annotation @Cacheable s'applique aux méthodes dont les résultats doivent être mis en cache. Lorsqu'une méthode est appelée à nouveau avec les mêmes paramètres, le résultat est récupéré depuis le cache.

@Cacheable(value = "usersCache", key = "#userId")
public User getUserById(String userId) {
    return userRepository.findById(userId);
}

Dans cet exemple, la méthode getUserById met en cache le résultat d'une requête utilisateur par son ID dans un cache nommé "usersCache". Si la méthode est appelée de nouveau avec le même userId, les données sont récupérées depuis le cache au lieu d'exécuter la requête sur la base de données.

Mise à jour du cache

L'annotation @CachePut met à jour le cache à chaque exécution de la méthode, que le résultat ait déjà été mis en cache ou non.

@CachePut(value = "usersCache", key = "#user.id")
public User updateUser(User user) {
    return userRepository.save(user);
}

L’annotation @CachePut est utilisée pour mettre à jour le cache à chaque appel de la méthode updateUser. Ceci est utile lorsque les données changent et qu’il est nécessaire de synchroniser le cache avec les modifications dans la base de données. Le cache est mis à jour avec la clé correspondant à l’ID utilisateur.

Nettoyage du cache

L’annotation @CacheEvict est utilisée pour supprimer des données du cache, par exemple lorsqu’un utilisateur est supprimé de la base de données.

@CacheEvict(value = "usersCache", key = "#userId")
public void deleteUser(String userId) {
    userRepository.deleteById(userId);
}

Dans cet exemple, la méthode deleteUser supprime l'entrée du cache dont la clé est égale à userId.

Opérations de cache combinées

L'annotation @Caching permet d'effectuer plusieurs opérations de cache au sein d'une seule méthode, en combinant @CachePut et @CacheEvict.

@Caching(
    put = { @CachePut(value = "usersCache", key = "#user.id") },
    evict = { @CacheEvict(value = "usersCache", key = "#user.id") }
)
public User updateUser(User user) {
    return userRepository.save(user);
}

Dans cet exemple, la méthode updateUser met à jour simultanément le cache avec le nouvel état de l'utilisateur à l'aide de @CachePut et supprime l'ancienne entrée du cache à l'aide de @CacheEvict. Ceci est utile lorsque plusieurs opérations de cache doivent être effectuées en même temps.

1. Quand utiliseriez-vous @CacheEvict ?

2. Quel est le but de l'annotation @CachePut ?

question mark

Quand utiliseriez-vous @CacheEvict ?

Select the correct answer

question mark

Quel est le but de l'annotation @CachePut ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 3

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Awesome!

Completion rate improved to 3.33

bookAnnotations pour Travailler avec le Cache

Glissez pour afficher le menu

Au lieu de gérer manuellement la mise en cache, il est possible d'utiliser des annotations qui automatisent ce processus. Examinons les annotations disponibles.

Mise en cache des résultats

L'annotation @Cacheable s'applique aux méthodes dont les résultats doivent être mis en cache. Lorsqu'une méthode est appelée à nouveau avec les mêmes paramètres, le résultat est récupéré depuis le cache.

@Cacheable(value = "usersCache", key = "#userId")
public User getUserById(String userId) {
    return userRepository.findById(userId);
}

Dans cet exemple, la méthode getUserById met en cache le résultat d'une requête utilisateur par son ID dans un cache nommé "usersCache". Si la méthode est appelée de nouveau avec le même userId, les données sont récupérées depuis le cache au lieu d'exécuter la requête sur la base de données.

Mise à jour du cache

L'annotation @CachePut met à jour le cache à chaque exécution de la méthode, que le résultat ait déjà été mis en cache ou non.

@CachePut(value = "usersCache", key = "#user.id")
public User updateUser(User user) {
    return userRepository.save(user);
}

L’annotation @CachePut est utilisée pour mettre à jour le cache à chaque appel de la méthode updateUser. Ceci est utile lorsque les données changent et qu’il est nécessaire de synchroniser le cache avec les modifications dans la base de données. Le cache est mis à jour avec la clé correspondant à l’ID utilisateur.

Nettoyage du cache

L’annotation @CacheEvict est utilisée pour supprimer des données du cache, par exemple lorsqu’un utilisateur est supprimé de la base de données.

@CacheEvict(value = "usersCache", key = "#userId")
public void deleteUser(String userId) {
    userRepository.deleteById(userId);
}

Dans cet exemple, la méthode deleteUser supprime l'entrée du cache dont la clé est égale à userId.

Opérations de cache combinées

L'annotation @Caching permet d'effectuer plusieurs opérations de cache au sein d'une seule méthode, en combinant @CachePut et @CacheEvict.

@Caching(
    put = { @CachePut(value = "usersCache", key = "#user.id") },
    evict = { @CacheEvict(value = "usersCache", key = "#user.id") }
)
public User updateUser(User user) {
    return userRepository.save(user);
}

Dans cet exemple, la méthode updateUser met à jour simultanément le cache avec le nouvel état de l'utilisateur à l'aide de @CachePut et supprime l'ancienne entrée du cache à l'aide de @CacheEvict. Ceci est utile lorsque plusieurs opérations de cache doivent être effectuées en même temps.

1. Quand utiliseriez-vous @CacheEvict ?

2. Quel est le but de l'annotation @CachePut ?

question mark

Quand utiliseriez-vous @CacheEvict ?

Select the correct answer

question mark

Quel est le but de l'annotation @CachePut ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 3
some-alt