Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Praktisk Anvendelse af Hashes | Caching med Redis og Spring Boot
Introduktion til Redis

bookPraktisk 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.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 4

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

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

bookPraktisk 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.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 4
some-alt