Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Anoteringar för Arbete med Cache | Cachelagring med Redis och Spring Boot
Introduktion till Redis

bookAnoteringar 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?

question mark

När används @CacheEvict?

Select the correct answer

question mark

Vad är syftet med @CachePut-annoteringen?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 3

Fråga AI

expand

Fråga AI

ChatGPT

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

bookAnoteringar 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?

question mark

När används @CacheEvict?

Select the correct answer

question mark

Vad är syftet med @CachePut-annoteringen?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 3
some-alt