Praktisk Anvendelse af Hashes
Vi vil fuldt ud samle vores applikation og teste den ved hjælp af Redis og Spring Boot. Caching vil markant øge hastigheden på behandlingen af forespørgsler og reducere belastningen på databasen.
Kort opsummering fra videoen
I vores program brugte vi følgende logik: når en bruger tilføjes til hoveddatabasen, bliver deres data ikke cacheret, da det endnu ikke er nødvendigt.
@Transactional
public User createUser(User user) {
return userRepository.save(user);
}
Metoden createUser gemmer blot brugeren i databasen.
Når en forespørgsel modtages for at hente en brugers data via ID, kontrolleres det først, om informationen er tilgængelig i Redis-cachen. Dette hjælper med at undgå unødvendige databaseforespørgsler, hvis dataene allerede er cachet.
@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))
);
}
Ved brug af @Cacheable-annotationen caches data under nøglen user-cache, som inkluderer værdien af id (user-cache:20 for en bruger med ID 20). Hvis data findes i cachen, hentes og returneres det. Hvis data ikke findes i cachen, forespørger metoden databasen.
Ved sletning af data fra databasen er det vigtigt også at fjerne det fra cachen for at sikre, at data forbliver konsistente, og at forældet information ikke anvendes.
@CacheEvict(value="user-cache", key="#id")
public void deleteUser(Long id) {
userRepository.deleteById(id);
}
Metoden deleteUser sletter brugeren fra databasen og rydder deres data fra Redis-cachen for at undgå brug af forældet information ved fremtidige forespørgsler.
Fordele ved caching
Nu til det spændende — hvorfor implementerede vi caching? Efter tilføjelsen af Redis-cachen blev forespørgsler meget hurtigere — faktisk op til 20 gange hurtigere! Dette ses tydeligt i skærmbillederne nedenfor.
Før caching
Før implementeringen af caching gik hver forespørgsel direkte til databasen, hvilket medførte betydelige forsinkelser under behandlingen.
Efter caching
Med caching håndteres de fleste forespørgsler nu af Redis, hvilket markant reducerer svartiden.
Resumé
Caching med Redis har gjort det muligt at optimere applikationens ydelse, fremskynde behandlingen af forespørgsler og reducere belastningen på databasen. Denne tilgang er særligt fordelagtig for højtrafikerede applikationer, hvor hastighed i behandlingen af forespørgsler er afgørende.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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
Praktisk Anvendelse af Hashes
Stryg for at vise menuen
Vi vil fuldt ud samle vores applikation og teste den ved hjælp af Redis og Spring Boot. Caching vil markant øge hastigheden på behandlingen af forespørgsler og reducere belastningen på databasen.
Kort opsummering fra videoen
I vores program brugte vi følgende logik: når en bruger tilføjes til hoveddatabasen, bliver deres data ikke cacheret, da det endnu ikke er nødvendigt.
@Transactional
public User createUser(User user) {
return userRepository.save(user);
}
Metoden createUser gemmer blot brugeren i databasen.
Når en forespørgsel modtages for at hente en brugers data via ID, kontrolleres det først, om informationen er tilgængelig i Redis-cachen. Dette hjælper med at undgå unødvendige databaseforespørgsler, hvis dataene allerede er cachet.
@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))
);
}
Ved brug af @Cacheable-annotationen caches data under nøglen user-cache, som inkluderer værdien af id (user-cache:20 for en bruger med ID 20). Hvis data findes i cachen, hentes og returneres det. Hvis data ikke findes i cachen, forespørger metoden databasen.
Ved sletning af data fra databasen er det vigtigt også at fjerne det fra cachen for at sikre, at data forbliver konsistente, og at forældet information ikke anvendes.
@CacheEvict(value="user-cache", key="#id")
public void deleteUser(Long id) {
userRepository.deleteById(id);
}
Metoden deleteUser sletter brugeren fra databasen og rydder deres data fra Redis-cachen for at undgå brug af forældet information ved fremtidige forespørgsler.
Fordele ved caching
Nu til det spændende — hvorfor implementerede vi caching? Efter tilføjelsen af Redis-cachen blev forespørgsler meget hurtigere — faktisk op til 20 gange hurtigere! Dette ses tydeligt i skærmbillederne nedenfor.
Før caching
Før implementeringen af caching gik hver forespørgsel direkte til databasen, hvilket medførte betydelige forsinkelser under behandlingen.
Efter caching
Med caching håndteres de fleste forespørgsler nu af Redis, hvilket markant reducerer svartiden.
Resumé
Caching med Redis har gjort det muligt at optimere applikationens ydelse, fremskynde behandlingen af forespørgsler og reducere belastningen på databasen. Denne tilgang er særligt fordelagtig for højtrafikerede applikationer, hvor hastighed i behandlingen af forespørgsler er afgørende.
Tak for dine kommentarer!