Praktisch Gebruik van Hashes
We zullen onze applicatie volledig assembleren en testen met Redis en Spring Boot. Caching zal de verwerking van verzoeken aanzienlijk versnellen en de belasting op de database verminderen.
Korte samenvatting van de video
In ons programma gebruikten we de volgende logica: wanneer een gebruiker wordt toegevoegd aan de hoofddatabase, worden zijn gegevens niet gecached omdat dit nog niet nodig is.
@Transactional
public User createUser(User user) {
return userRepository.save(user);
}
De methode createUser slaat de gebruiker eenvoudig op in de database.
Wanneer er een verzoek binnenkomt om de gegevens van een gebruiker op te halen via ID, wordt eerst gecontroleerd of de informatie beschikbaar is in de Redis-cache. Dit voorkomt onnodige databasequery's als de gegevens al gecached zijn.
@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))
);
}
Met de annotatie @Cacheable wordt de gegevens gecached onder de sleutel user-cache, die de waarde van de id bevat (user-cache:20 voor een gebruiker met ID 20). Als de gegevens in de cache staan, worden deze opgehaald en geretourneerd. Als de gegevens niet in de cache staan, vraagt de methode de database op.
Bij het verwijderen van gegevens uit de database is het belangrijk om deze ook uit de cache te verwijderen om de consistentie van de gegevens te waarborgen en te voorkomen dat verouderde informatie wordt gebruikt.
@CacheEvict(value="user-cache", key="#id")
public void deleteUser(Long id) {
userRepository.deleteById(id);
}
De methode deleteUser verwijdert de gebruiker uit de database en leegt hun gegevens uit de Redis-cache om het gebruik van verouderde informatie bij toekomstige aanvragen te voorkomen.
Voordelen van caching
Nu het interessante gedeelte — waarom hebben we caching geïmplementeerd? Na het toevoegen van de Redis-cache werden aanvragen veel sneller — tot wel 20 keer sneller! Dit wordt duidelijk aangetoond in de onderstaande screenshots.
Voor caching
Voor de implementatie van caching ging elke aanvraag direct naar de database, wat leidde tot aanzienlijke vertragingen tijdens de verwerking.
Na caching
Met caching worden de meeste aanvragen nu afgehandeld door Redis, wat de responstijd aanzienlijk verkort.
Samenvatting
Caching met Redis heeft ons in staat gesteld de prestaties van de applicatie te optimaliseren, de verwerking van aanvragen te versnellen en de belasting op de database te verminderen. Deze benadering is vooral voordelig voor drukbezochte applicaties waarbij de snelheid van aanvraagverwerking cruciaal is.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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
Praktisch Gebruik van Hashes
Veeg om het menu te tonen
We zullen onze applicatie volledig assembleren en testen met Redis en Spring Boot. Caching zal de verwerking van verzoeken aanzienlijk versnellen en de belasting op de database verminderen.
Korte samenvatting van de video
In ons programma gebruikten we de volgende logica: wanneer een gebruiker wordt toegevoegd aan de hoofddatabase, worden zijn gegevens niet gecached omdat dit nog niet nodig is.
@Transactional
public User createUser(User user) {
return userRepository.save(user);
}
De methode createUser slaat de gebruiker eenvoudig op in de database.
Wanneer er een verzoek binnenkomt om de gegevens van een gebruiker op te halen via ID, wordt eerst gecontroleerd of de informatie beschikbaar is in de Redis-cache. Dit voorkomt onnodige databasequery's als de gegevens al gecached zijn.
@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))
);
}
Met de annotatie @Cacheable wordt de gegevens gecached onder de sleutel user-cache, die de waarde van de id bevat (user-cache:20 voor een gebruiker met ID 20). Als de gegevens in de cache staan, worden deze opgehaald en geretourneerd. Als de gegevens niet in de cache staan, vraagt de methode de database op.
Bij het verwijderen van gegevens uit de database is het belangrijk om deze ook uit de cache te verwijderen om de consistentie van de gegevens te waarborgen en te voorkomen dat verouderde informatie wordt gebruikt.
@CacheEvict(value="user-cache", key="#id")
public void deleteUser(Long id) {
userRepository.deleteById(id);
}
De methode deleteUser verwijdert de gebruiker uit de database en leegt hun gegevens uit de Redis-cache om het gebruik van verouderde informatie bij toekomstige aanvragen te voorkomen.
Voordelen van caching
Nu het interessante gedeelte — waarom hebben we caching geïmplementeerd? Na het toevoegen van de Redis-cache werden aanvragen veel sneller — tot wel 20 keer sneller! Dit wordt duidelijk aangetoond in de onderstaande screenshots.
Voor caching
Voor de implementatie van caching ging elke aanvraag direct naar de database, wat leidde tot aanzienlijke vertragingen tijdens de verwerking.
Na caching
Met caching worden de meeste aanvragen nu afgehandeld door Redis, wat de responstijd aanzienlijk verkort.
Samenvatting
Caching met Redis heeft ons in staat gesteld de prestaties van de applicatie te optimaliseren, de verwerking van aanvragen te versnellen en de belasting op de database te verminderen. Deze benadering is vooral voordelig voor drukbezochte applicaties waarbij de snelheid van aanvraagverwerking cruciaal is.
Bedankt voor je feedback!