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 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.
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 test if my cache is working correctly in my own project?
Awesome!
Completion rate improved to 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 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.
Takk for tilbakemeldingene dine!