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 deleteUser methode de vermelding uit de cache met de sleutel gelijk aan userId.

Gecombineerde cachebewerkingen

De @Caching annotatie 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 met behulp van @CachePut en verwijdert het oude item uit de cache met behulp van @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.

Awesome!

Completion rate improved to 3.33

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 deleteUser methode de vermelding uit de cache met de sleutel gelijk aan userId.

Gecombineerde cachebewerkingen

De @Caching annotatie 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 met behulp van @CachePut en verwijdert het oude item uit de cache met behulp van @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