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 blir lagt 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 mottas 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 dersom 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 bruk av @Cacheable-annotasjonen bufres data under nøkkelen user-cache, som inkluderer verdien til id (user-cache:20 for en bruker med ID 20). Hvis data finnes i cachen, hentes og returneres det. Hvis data ikke finnes i cachen, forespør metoden databasen.

Ved sletting av data fra databasen er det viktig å fjerne det fra cachen også for å sikre at data 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 monitor or debug cache hits and misses in my application?

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 blir lagt 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 mottas 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 dersom 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 bruk av @Cacheable-annotasjonen bufres data under nøkkelen user-cache, som inkluderer verdien til id (user-cache:20 for en bruker med ID 20). Hvis data finnes i cachen, hentes og returneres det. Hvis data ikke finnes i cachen, forespør metoden databasen.

Ved sletting av data fra databasen er det viktig å fjerne det fra cachen også for å sikre at data 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