Anoteringar för Arbete med Cache
Istället för att hantera cachelagring manuellt kan du använda annotationer som automatiskt hanterar processen. Här är en översikt av tillgängliga annotationer.
Cachelagring av resultat
@Cacheable annotationen används på metoder vars resultat ska cachelagras. När metoden anropas igen med samma parametrar, hämtas resultatet från cachen.
@Cacheable(value = "usersCache", key = "#userId")
public User getUserById(String userId) {
return userRepository.findById(userId);
}
I det här exemplet cachar metoden getUserById resultatet av en användarfråga efter deras ID i en cache med namnet "usersCache". Om metoden anropas igen med samma userId, hämtas datan från cachen istället för att köra frågan mot databasen.
Uppdatering av cache
Annoteringen @CachePut uppdaterar cachen varje gång metoden körs, oavsett om resultatet redan har cachats tidigare.
@CachePut(value = "usersCache", key = "#user.id")
public User updateUser(User user) {
return userRepository.save(user);
}
Annoteringen @CachePut används för att uppdatera cachen varje gång metoden updateUser anropas. Detta är användbart när data ändras och det är nödvändigt att synkronisera cachen med ändringarna i databasen. Cachen uppdateras med nyckeln som motsvarar användar-ID.
Rensa cachen
Annoteringen @CacheEvict används för att ta bort data från cachen, till exempel när en användare tas bort från databasen.
@CacheEvict(value = "usersCache", key = "#userId")
public void deleteUser(String userId) {
userRepository.deleteById(userId);
}
I detta exempel tar metoden deleteUser bort posten från cachen med nyckeln lika med userId.
Kombinerade cache-operationer
Annoteringen @Caching möjliggör flera cache-operationer inom en enda metod, genom att kombinera @CachePut och @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 detta exempel uppdaterar updateUser-metoden samtidigt cachen med användarens nya tillstånd med hjälp av @CachePut och tar bort den gamla posten från cachen med @CacheEvict. Detta är användbart när flera cacheoperationer behöver utföras samtidigt.
1. När används @CacheEvict?
2. Vad är syftet med @CachePut-annoteringen?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 3.33
Anoteringar för Arbete med Cache
Svep för att visa menyn
Istället för att hantera cachelagring manuellt kan du använda annotationer som automatiskt hanterar processen. Här är en översikt av tillgängliga annotationer.
Cachelagring av resultat
@Cacheable annotationen används på metoder vars resultat ska cachelagras. När metoden anropas igen med samma parametrar, hämtas resultatet från cachen.
@Cacheable(value = "usersCache", key = "#userId")
public User getUserById(String userId) {
return userRepository.findById(userId);
}
I det här exemplet cachar metoden getUserById resultatet av en användarfråga efter deras ID i en cache med namnet "usersCache". Om metoden anropas igen med samma userId, hämtas datan från cachen istället för att köra frågan mot databasen.
Uppdatering av cache
Annoteringen @CachePut uppdaterar cachen varje gång metoden körs, oavsett om resultatet redan har cachats tidigare.
@CachePut(value = "usersCache", key = "#user.id")
public User updateUser(User user) {
return userRepository.save(user);
}
Annoteringen @CachePut används för att uppdatera cachen varje gång metoden updateUser anropas. Detta är användbart när data ändras och det är nödvändigt att synkronisera cachen med ändringarna i databasen. Cachen uppdateras med nyckeln som motsvarar användar-ID.
Rensa cachen
Annoteringen @CacheEvict används för att ta bort data från cachen, till exempel när en användare tas bort från databasen.
@CacheEvict(value = "usersCache", key = "#userId")
public void deleteUser(String userId) {
userRepository.deleteById(userId);
}
I detta exempel tar metoden deleteUser bort posten från cachen med nyckeln lika med userId.
Kombinerade cache-operationer
Annoteringen @Caching möjliggör flera cache-operationer inom en enda metod, genom att kombinera @CachePut och @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 detta exempel uppdaterar updateUser-metoden samtidigt cachen med användarens nya tillstånd med hjälp av @CachePut och tar bort den gamla posten från cachen med @CacheEvict. Detta är användbart när flera cacheoperationer behöver utföras samtidigt.
1. När används @CacheEvict?
2. Vad är syftet med @CachePut-annoteringen?
Tack för dina kommentarer!