Annotationer til Arbejde med Cache
Stryg for at vise menuen
I stedet for manuelt at håndtere caching, kan du bruge annotationer, der automatisk styrer processen. Lad os se på de tilgængelige annotationer.
Caching af resultater
@Cacheable annotationen anvendes på metoder, hvis resultater skal caches. Når metoden kaldes igen med de samme parametre, hentes resultatet fra cachen.
@Cacheable(value = "usersCache", key = "#userId")
public User getUserById(String userId) {
return userRepository.findById(userId);
}
I dette eksempel gemmer getUserById metoden resultatet af en forespørgsel på en bruger efter deres ID i en cache kaldet "usersCache". Hvis metoden kaldes igen med samme userId, hentes dataene fra cachen i stedet for at udføre forespørgslen mod databasen.
Opdatering af cachen
@CachePut annotationen opdaterer cachen hver gang metoden udføres, uanset om resultatet tidligere var cacheret.
@CachePut(value = "usersCache", key = "#user.id")
public User updateUser(User user) {
return userRepository.save(user);
}
Annotationen @CachePut bruges til at opdatere cachen hver gang updateUser-metoden kaldes. Dette er nyttigt, når data ændres, og det er nødvendigt at synkronisere cachen med ændringerne i databasen. Cachen opdateres med den nøgle, der svarer til bruger-ID'et.
Rydning af cache
Annotationen @CacheEvict bruges til at fjerne data fra cachen, f.eks. når en bruger slettes fra databasen.
@CacheEvict(value = "usersCache", key = "#userId")
public void deleteUser(String userId) {
userRepository.deleteById(userId);
}
I dette eksempel fjerner deleteUser-metoden posten fra cachen med nøglen lig med userId.
Kombinerede cache-operationer
@Caching-annotationen muliggør flere cache-operationer inden for en enkelt metode, hvor @CachePut og @CacheEvict kombineres.
@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 eksempel opdaterer updateUser-metoden samtidig cachen med brugerens nye tilstand ved hjælp af @CachePut og fjerner den gamle post fra cachen ved hjælp af @CacheEvict. Dette er nyttigt, når der skal udføres flere cache-operationer på samme tidspunkt.
1. Hvornår anvendes @CacheEvict?
2. Hvad er formålet med @CachePut-annoteringen?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat