Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Praktisk Bruk av Hashes | Mellomlagring med Redis og Spring Boot
Introduksjon til Redis

bookPraktisk Bruk av Hashes

Vi skal fullstendig sette sammen applikasjonen vår og teste den ved hjelp av Redis og Spring Boot. Caching vil i stor grad øke hastigheten på forespørselsbehandlingen og redusere belastningen på databasen.

Kort oppsummering fra videoen

I programmet vårt brukte vi følgende logikk: når en bruker legges til i hoveddatabasen, blir ikke dataene deres bufret, fordi det ennå ikke er nødvendig.

@Transactional
public User createUser(User user) {
    return userRepository.save(user);
}

Metoden createUser lagrer brukeren i databasen.

Når en forespørsel kommer inn for å hente en brukers data via ID, sjekker vi først om informasjonen er tilgjengelig i Redis-cachen. Dette bidrar til å unngå unødvendige databaseforespørsler hvis dataene allerede er bufret.

@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 å bruke @Cacheable-annotasjonen bufres dataene under nøkkelen user-cache, som inkluderer verdien av id (user-cache:20 for en bruker med ID 20). Hvis dataene finnes i cachen, hentes og returneres de. Hvis dataene ikke finnes i cachen, henter metoden dataene fra databasen.

Ved sletting av data fra databasen er det viktig å fjerne dem fra cachen også, for å sikre at dataene forblir konsistente og at utdatert informasjon ikke benyttes.

@CacheEvict(value="user-cache", key="#id")
public void deleteUser(Long id) {
    userRepository.deleteById(id);
}

Metoden deleteUser sletter brukeren fra databasen og fjerner deres data fra Redis-cachen for å forhindre bruk av utdatert informasjon i fremtidige spørringer.

Fordeler med caching

Nå til det spennende — hvorfor implementerte vi caching? Etter å ha lagt til Redis-cache, ble forespørslene mye raskere — faktisk opptil 20 ganger raskere! Dette vises tydelig i skjermbildene nedenfor.

Før caching

Før vi implementerte caching, gikk hver forespørsel direkte til databasen, noe som førte til betydelige forsinkelser under behandlingen.

Etter caching

Med caching på plass, håndteres nå de fleste forespørsler av Redis, noe som betydelig reduserer responstiden.

Sammendrag

Caching med Redis har gjort det mulig å optimalisere applikasjonens ytelse, øke hastigheten på forespørselsbehandling, og redusere belastningen på databasen. Denne tilnærmingen er spesielt fordelaktig for applikasjoner med høy trafikk hvor hastighet på forespørselsbehandling er avgjørende.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 4

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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 Bruk av Hashes

Sveip for å vise menyen

Vi skal fullstendig sette sammen applikasjonen vår og teste den ved hjelp av Redis og Spring Boot. Caching vil i stor grad øke hastigheten på forespørselsbehandlingen og redusere belastningen på databasen.

Kort oppsummering fra videoen

I programmet vårt brukte vi følgende logikk: når en bruker legges til i hoveddatabasen, blir ikke dataene deres bufret, fordi det ennå ikke er nødvendig.

@Transactional
public User createUser(User user) {
    return userRepository.save(user);
}

Metoden createUser lagrer brukeren i databasen.

Når en forespørsel kommer inn for å hente en brukers data via ID, sjekker vi først om informasjonen er tilgjengelig i Redis-cachen. Dette bidrar til å unngå unødvendige databaseforespørsler hvis dataene allerede er bufret.

@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 å bruke @Cacheable-annotasjonen bufres dataene under nøkkelen user-cache, som inkluderer verdien av id (user-cache:20 for en bruker med ID 20). Hvis dataene finnes i cachen, hentes og returneres de. Hvis dataene ikke finnes i cachen, henter metoden dataene fra databasen.

Ved sletting av data fra databasen er det viktig å fjerne dem fra cachen også, for å sikre at dataene forblir konsistente og at utdatert informasjon ikke benyttes.

@CacheEvict(value="user-cache", key="#id")
public void deleteUser(Long id) {
    userRepository.deleteById(id);
}

Metoden deleteUser sletter brukeren fra databasen og fjerner deres data fra Redis-cachen for å forhindre bruk av utdatert informasjon i fremtidige spørringer.

Fordeler med caching

Nå til det spennende — hvorfor implementerte vi caching? Etter å ha lagt til Redis-cache, ble forespørslene mye raskere — faktisk opptil 20 ganger raskere! Dette vises tydelig i skjermbildene nedenfor.

Før caching

Før vi implementerte caching, gikk hver forespørsel direkte til databasen, noe som førte til betydelige forsinkelser under behandlingen.

Etter caching

Med caching på plass, håndteres nå de fleste forespørsler av Redis, noe som betydelig reduserer responstiden.

Sammendrag

Caching med Redis har gjort det mulig å optimalisere applikasjonens ytelse, øke hastigheten på forespørselsbehandling, og redusere belastningen på databasen. Denne tilnærmingen er spesielt fordelaktig for applikasjoner med høy trafikk hvor hastighet på forespørselsbehandling er avgjørende.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 4
some-alt