Praktisk 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.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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?
Fantastisk!
Completion rate forbedret til 3.33
Praktisk 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.
Takk for tilbakemeldingene dine!