Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Annotaties voor Werken met Cache | Caching met Redis en Spring Boot
Introductie tot Redis

bookAnnotaties voor Werken met Cache

In plaats van handmatig caching te beheren, kun je annotaties gebruiken die het proces automatisch afhandelen. Laten we de beschikbare annotaties bekijken.

Resultaten cachen

De @Cacheable annotatie wordt toegepast op methoden waarvan de resultaten moeten worden gecached. Wanneer de methode opnieuw wordt aangeroepen met dezelfde parameters, wordt het resultaat uit de cache gehaald.

@Cacheable(value = "usersCache", key = "#userId")
public User getUserById(String userId) {
    return userRepository.findById(userId);
}

In dit voorbeeld slaat de methode getUserById het resultaat van een gebruikersquery op basis van hun ID op in een cache genaamd "usersCache". Als de methode opnieuw wordt aangeroepen met dezelfde userId, worden de gegevens uit de cache gehaald in plaats van de query uit te voeren op de database.

Cache bijwerken

De annotatie @CachePut werkt de cache bij elke keer dat de methode wordt uitgevoerd, ongeacht of het resultaat eerder is gecached.

@CachePut(value = "usersCache", key = "#user.id")
public User updateUser(User user) {
    return userRepository.save(user);
}

De @CachePut annotatie wordt gebruikt om de cache te bijwerken telkens wanneer de updateUser methode wordt aangeroepen. Dit is nuttig wanneer de gegevens veranderen en je de cache moet synchroniseren met de wijzigingen in de database. De cache wordt bijgewerkt met de sleutel die overeenkomt met de gebruikers-ID.

Cache wissen

De @CacheEvict annotatie wordt gebruikt om gegevens uit de cache te verwijderen, bijvoorbeeld wanneer een gebruiker uit de database wordt verwijderd.

@CacheEvict(value = "usersCache", key = "#userId")
public void deleteUser(String userId) {
    userRepository.deleteById(userId);
}

In dit voorbeeld verwijdert de methode deleteUser de vermelding uit de cache met de sleutel gelijk aan userId.

Gecombineerde cachebewerkingen

De annotatie @Caching maakt het mogelijk om meerdere cachebewerkingen uit te voeren binnen één methode, door @CachePut en @CacheEvict te combineren.

@Caching(
    put = { @CachePut(value = "usersCache", key = "#user.id") },
    evict = { @CacheEvict(value = "usersCache", key = "#user.id") }
)
public User updateUser(User user) {
    return userRepository.save(user);
}

In dit voorbeeld werkt de updateUser-methode gelijktijdig de cache bij met de nieuwe status van de gebruiker via @CachePut en verwijdert het oude item uit de cache via @CacheEvict. Dit is nuttig wanneer meerdere cachebewerkingen tegelijkertijd moeten worden uitgevoerd.

1. Wanneer zou je @CacheEvict gebruiken?

2. Wat is het doel van de @CachePut-annotatie?

question mark

Wanneer zou je @CacheEvict gebruiken?

Select the correct answer

question mark

Wat is het doel van de @CachePut-annotatie?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 3

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

bookAnnotaties voor Werken met Cache

Veeg om het menu te tonen

In plaats van handmatig caching te beheren, kun je annotaties gebruiken die het proces automatisch afhandelen. Laten we de beschikbare annotaties bekijken.

Resultaten cachen

De @Cacheable annotatie wordt toegepast op methoden waarvan de resultaten moeten worden gecached. Wanneer de methode opnieuw wordt aangeroepen met dezelfde parameters, wordt het resultaat uit de cache gehaald.

@Cacheable(value = "usersCache", key = "#userId")
public User getUserById(String userId) {
    return userRepository.findById(userId);
}

In dit voorbeeld slaat de methode getUserById het resultaat van een gebruikersquery op basis van hun ID op in een cache genaamd "usersCache". Als de methode opnieuw wordt aangeroepen met dezelfde userId, worden de gegevens uit de cache gehaald in plaats van de query uit te voeren op de database.

Cache bijwerken

De annotatie @CachePut werkt de cache bij elke keer dat de methode wordt uitgevoerd, ongeacht of het resultaat eerder is gecached.

@CachePut(value = "usersCache", key = "#user.id")
public User updateUser(User user) {
    return userRepository.save(user);
}

De @CachePut annotatie wordt gebruikt om de cache te bijwerken telkens wanneer de updateUser methode wordt aangeroepen. Dit is nuttig wanneer de gegevens veranderen en je de cache moet synchroniseren met de wijzigingen in de database. De cache wordt bijgewerkt met de sleutel die overeenkomt met de gebruikers-ID.

Cache wissen

De @CacheEvict annotatie wordt gebruikt om gegevens uit de cache te verwijderen, bijvoorbeeld wanneer een gebruiker uit de database wordt verwijderd.

@CacheEvict(value = "usersCache", key = "#userId")
public void deleteUser(String userId) {
    userRepository.deleteById(userId);
}

In dit voorbeeld verwijdert de methode deleteUser de vermelding uit de cache met de sleutel gelijk aan userId.

Gecombineerde cachebewerkingen

De annotatie @Caching maakt het mogelijk om meerdere cachebewerkingen uit te voeren binnen één methode, door @CachePut en @CacheEvict te combineren.

@Caching(
    put = { @CachePut(value = "usersCache", key = "#user.id") },
    evict = { @CacheEvict(value = "usersCache", key = "#user.id") }
)
public User updateUser(User user) {
    return userRepository.save(user);
}

In dit voorbeeld werkt de updateUser-methode gelijktijdig de cache bij met de nieuwe status van de gebruiker via @CachePut en verwijdert het oude item uit de cache via @CacheEvict. Dit is nuttig wanneer meerdere cachebewerkingen tegelijkertijd moeten worden uitgevoerd.

1. Wanneer zou je @CacheEvict gebruiken?

2. Wat is het doel van de @CachePut-annotatie?

question mark

Wanneer zou je @CacheEvict gebruiken?

Select the correct answer

question mark

Wat is het doel van de @CachePut-annotatie?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 3
some-alt