Annotasjoner for Arbeid med Cache
I stedet for å håndtere caching manuelt, kan du bruke annotasjoner som automatisk styrer prosessen. La oss se på hvilke annotasjoner som er tilgjengelige.
Caching av resultater
@Cacheable-annotasjonen brukes på metoder der resultatene skal caches. Når metoden kalles igjen med de samme parameterne, hentes resultatet fra cachen.
@Cacheable(value = "usersCache", key = "#userId")
public User getUserById(String userId) {
return userRepository.findById(userId);
}
I dette eksemplet mellomlagrer getUserById-metoden resultatet av et brukersøk etter deres ID i en cache kalt "usersCache". Hvis metoden kalles igjen med samme userId, hentes dataene fra cachen i stedet for å utføre spørringen mot databasen.
Oppdatering av cache
@CachePut-annotasjonen oppdaterer cachen hver gang metoden kjøres, uavhengig av om resultatet tidligere har blitt mellomlagret.
@CachePut(value = "usersCache", key = "#user.id")
public User updateUser(User user) {
return userRepository.save(user);
}
Annotasjonen @CachePut brukes til å oppdatere cachen hver gang updateUser-metoden kalles. Dette er nyttig når data endres og det er behov for å synkronisere cachen med endringene i databasen. Cachen oppdateres med nøkkelen som tilsvarer bruker-ID.
Tømming av cache
Annotasjonen @CacheEvict brukes til å fjerne data fra cachen, for eksempel når en bruker slettes fra databasen.
@CacheEvict(value = "usersCache", key = "#userId")
public void deleteUser(String userId) {
userRepository.deleteById(userId);
}
I dette eksempelet fjerner deleteUser-metoden oppføringen fra cachen med nøkkelen lik userId.
Kombinerte cache-operasjoner
@Caching-annotasjonen tillater flere cache-operasjoner å utføres innenfor én metode, ved å kombinere @CachePut og @CacheEvict.
@Caching(
put = { @CachePut(value = "usersCache", key = "#user.id") },
evict = { @CacheEvict(value = "usersCache", key = "#user.id") }
)
public User updateUser(User user) {
return userRepository.save(user);
}
I dette eksempelet oppdaterer updateUser-metoden samtidig cachen med ny tilstand for brukeren ved å bruke @CachePut, og fjerner den gamle oppføringen fra cachen ved å bruke @CacheEvict. Dette er nyttig når det er behov for å utføre flere cache-operasjoner på samme tidspunkt.
1. Når bør du bruke @CacheEvict?
2. Hva er formålet med @CachePut-annotasjonen?
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
Awesome!
Completion rate improved to 3.33
Annotasjoner for Arbeid med Cache
Sveip for å vise menyen
I stedet for å håndtere caching manuelt, kan du bruke annotasjoner som automatisk styrer prosessen. La oss se på hvilke annotasjoner som er tilgjengelige.
Caching av resultater
@Cacheable-annotasjonen brukes på metoder der resultatene skal caches. Når metoden kalles igjen med de samme parameterne, hentes resultatet fra cachen.
@Cacheable(value = "usersCache", key = "#userId")
public User getUserById(String userId) {
return userRepository.findById(userId);
}
I dette eksemplet mellomlagrer getUserById-metoden resultatet av et brukersøk etter deres ID i en cache kalt "usersCache". Hvis metoden kalles igjen med samme userId, hentes dataene fra cachen i stedet for å utføre spørringen mot databasen.
Oppdatering av cache
@CachePut-annotasjonen oppdaterer cachen hver gang metoden kjøres, uavhengig av om resultatet tidligere har blitt mellomlagret.
@CachePut(value = "usersCache", key = "#user.id")
public User updateUser(User user) {
return userRepository.save(user);
}
Annotasjonen @CachePut brukes til å oppdatere cachen hver gang updateUser-metoden kalles. Dette er nyttig når data endres og det er behov for å synkronisere cachen med endringene i databasen. Cachen oppdateres med nøkkelen som tilsvarer bruker-ID.
Tømming av cache
Annotasjonen @CacheEvict brukes til å fjerne data fra cachen, for eksempel når en bruker slettes fra databasen.
@CacheEvict(value = "usersCache", key = "#userId")
public void deleteUser(String userId) {
userRepository.deleteById(userId);
}
I dette eksempelet fjerner deleteUser-metoden oppføringen fra cachen med nøkkelen lik userId.
Kombinerte cache-operasjoner
@Caching-annotasjonen tillater flere cache-operasjoner å utføres innenfor én metode, ved å kombinere @CachePut og @CacheEvict.
@Caching(
put = { @CachePut(value = "usersCache", key = "#user.id") },
evict = { @CacheEvict(value = "usersCache", key = "#user.id") }
)
public User updateUser(User user) {
return userRepository.save(user);
}
I dette eksempelet oppdaterer updateUser-metoden samtidig cachen med ny tilstand for brukeren ved å bruke @CachePut, og fjerner den gamle oppføringen fra cachen ved å bruke @CacheEvict. Dette er nyttig når det er behov for å utføre flere cache-operasjoner på samme tidspunkt.
1. Når bør du bruke @CacheEvict?
2. Hva er formålet med @CachePut-annotasjonen?
Takk for tilbakemeldingene dine!