Utilisation Pratique des Hachages
Nous allons entièrement assembler notre application et la tester en utilisant Redis et Spring Boot. La mise en cache accélérera considérablement le traitement des requêtes et réduira la charge sur la base de données.
Résumé bref de la vidéo
Dans notre programme, nous avons utilisé la logique suivante : lorsqu’un utilisateur est ajouté à la base de données principale, ses données ne sont pas mises en cache car cela n’est pas encore nécessaire.
@Transactional
public User createUser(User user) {
return userRepository.save(user);
}
La méthode createUser enregistre simplement l'utilisateur dans la base de données.
Lorsqu'une requête est reçue pour récupérer les données d'un utilisateur par ID, une vérification préalable est effectuée pour déterminer si l'information est disponible dans le cache Redis. Cela permet d'éviter des requêtes inutiles à la base de données si les données sont déjà mises en cache.
@Transactional
@Cacheable(value = "user-cache", key = "#id")
@SneakyThrows
public User getUserById(Long id) {
Thread.sleep(100);
return userRepository.findById(id).orElseThrow(
() -> new RuntimeException(String.format("User with this id: %d not found", id))
);
}
En utilisant l’annotation @Cacheable, les données sont mises en cache sous la clé user-cache, qui inclut la valeur de l’id (user-cache:20 pour un utilisateur avec l’ID 20). Si les données sont présentes dans le cache, elles sont récupérées et renvoyées. Si les données ne sont pas dans le cache, la méthode interroge la base de données.
Lors de la suppression de données de la base de données, il est important de les retirer également du cache afin de garantir la cohérence des données et d’éviter l’utilisation d’informations obsolètes.
@CacheEvict(value="user-cache", key="#id")
public void deleteUser(Long id) {
userRepository.deleteById(id);
}
La méthode deleteUser supprime l'utilisateur de la base de données et efface ses données du cache Redis afin d'éviter l'utilisation d'informations obsolètes lors de futures requêtes.
Avantages de la mise en cache
Passons maintenant à la partie intéressante — pourquoi avons-nous mis en place la mise en cache ? Après l'ajout du cache Redis, les requêtes sont devenues beaucoup plus rapides — jusqu'à 20 fois plus rapides ! Cela est clairement illustré dans les captures d'écran ci-dessous.
Avant la mise en cache
Avant la mise en place de la mise en cache, chaque requête était envoyée directement à la base de données, ce qui entraînait des retards importants lors du traitement.
Après la mise en cache
Avec la mise en cache, la plupart des requêtes sont désormais traitées par Redis, ce qui réduit considérablement le temps de réponse.
Résumé
La mise en cache avec Redis a permis d’optimiser les performances de l’application, d’accélérer le traitement des requêtes et de réduire la charge sur la base de données. Cette méthode est particulièrement avantageuse pour les applications à fort trafic où la rapidité de traitement des requêtes est essentielle.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain how the @Cacheable and @CacheEvict annotations work in more detail?
What are some best practices for using Redis caching in Spring Boot applications?
How can I test if my cache is working correctly in my own project?
Awesome!
Completion rate improved to 3.33
Utilisation Pratique des Hachages
Glissez pour afficher le menu
Nous allons entièrement assembler notre application et la tester en utilisant Redis et Spring Boot. La mise en cache accélérera considérablement le traitement des requêtes et réduira la charge sur la base de données.
Résumé bref de la vidéo
Dans notre programme, nous avons utilisé la logique suivante : lorsqu’un utilisateur est ajouté à la base de données principale, ses données ne sont pas mises en cache car cela n’est pas encore nécessaire.
@Transactional
public User createUser(User user) {
return userRepository.save(user);
}
La méthode createUser enregistre simplement l'utilisateur dans la base de données.
Lorsqu'une requête est reçue pour récupérer les données d'un utilisateur par ID, une vérification préalable est effectuée pour déterminer si l'information est disponible dans le cache Redis. Cela permet d'éviter des requêtes inutiles à la base de données si les données sont déjà mises en cache.
@Transactional
@Cacheable(value = "user-cache", key = "#id")
@SneakyThrows
public User getUserById(Long id) {
Thread.sleep(100);
return userRepository.findById(id).orElseThrow(
() -> new RuntimeException(String.format("User with this id: %d not found", id))
);
}
En utilisant l’annotation @Cacheable, les données sont mises en cache sous la clé user-cache, qui inclut la valeur de l’id (user-cache:20 pour un utilisateur avec l’ID 20). Si les données sont présentes dans le cache, elles sont récupérées et renvoyées. Si les données ne sont pas dans le cache, la méthode interroge la base de données.
Lors de la suppression de données de la base de données, il est important de les retirer également du cache afin de garantir la cohérence des données et d’éviter l’utilisation d’informations obsolètes.
@CacheEvict(value="user-cache", key="#id")
public void deleteUser(Long id) {
userRepository.deleteById(id);
}
La méthode deleteUser supprime l'utilisateur de la base de données et efface ses données du cache Redis afin d'éviter l'utilisation d'informations obsolètes lors de futures requêtes.
Avantages de la mise en cache
Passons maintenant à la partie intéressante — pourquoi avons-nous mis en place la mise en cache ? Après l'ajout du cache Redis, les requêtes sont devenues beaucoup plus rapides — jusqu'à 20 fois plus rapides ! Cela est clairement illustré dans les captures d'écran ci-dessous.
Avant la mise en cache
Avant la mise en place de la mise en cache, chaque requête était envoyée directement à la base de données, ce qui entraînait des retards importants lors du traitement.
Après la mise en cache
Avec la mise en cache, la plupart des requêtes sont désormais traitées par Redis, ce qui réduit considérablement le temps de réponse.
Résumé
La mise en cache avec Redis a permis d’optimiser les performances de l’application, d’accélérer le traitement des requêtes et de réduire la charge sur la base de données. Cette méthode est particulièrement avantageuse pour les applications à fort trafic où la rapidité de traitement des requêtes est essentielle.
Merci pour vos commentaires !