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 | Caching med Redis och Spring Boot
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Introduktion till Redis

bookAnoteringar för Arbete med Cache

Istället för att hantera cachelagring manuellt kan du använda annoteringar som automatiskt hanterar processen. Här följer en översikt av tillgängliga annoteringar.

Cachelagring av resultat

Annoteringen @Cacheable 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 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 du behöver 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

@Caching-annoteringen 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 du behöver utföra flera cacheoperationer på samma gång.

1. När skulle du använda @CacheEvict?

2. Vad är syftet med @CachePut-annoteringen?

question mark

När skulle du använda @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

Suggested prompts:

Can you explain the difference between @Cacheable, @CachePut, and @CacheEvict?

How do I choose which caching annotation to use for a specific method?

Are there any best practices for managing cache consistency in Spring?

bookAnoteringar för Arbete med Cache

Svep för att visa menyn

Istället för att hantera cachelagring manuellt kan du använda annoteringar som automatiskt hanterar processen. Här följer en översikt av tillgängliga annoteringar.

Cachelagring av resultat

Annoteringen @Cacheable 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 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 du behöver 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

@Caching-annoteringen 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 du behöver utföra flera cacheoperationer på samma gång.

1. När skulle du använda @CacheEvict?

2. Vad är syftet med @CachePut-annoteringen?

question mark

När skulle du använda @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