Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Annotationen für die Arbeit mit Cache | Caching mit Redis und Spring Boot
Einführung in Redis

bookAnnotationen für die Arbeit mit Cache

Anstelle der manuellen Verwaltung des Cachings können Annotationen verwendet werden, die den Prozess automatisch steuern. Im Folgenden werden die verfügbaren Annotationen vorgestellt.

Zwischenspeichern von Ergebnissen

Die @Cacheable-Annotation wird auf Methoden angewendet, deren Ergebnisse zwischengespeichert werden sollen. Wird die Methode erneut mit denselben Parametern aufgerufen, wird das Ergebnis aus dem Cache abgerufen.

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

In diesem Beispiel speichert die Methode getUserById das Ergebnis einer Benutzerabfrage anhand ihrer ID in einem Cache mit dem Namen "usersCache". Wird die Methode erneut mit derselben userId aufgerufen, werden die Daten aus dem Cache abgerufen, anstatt die Abfrage erneut gegen die Datenbank auszuführen.

Aktualisierung des Caches

Die Annotation @CachePut aktualisiert den Cache jedes Mal, wenn die Methode ausgeführt wird, unabhängig davon, ob das Ergebnis zuvor zwischengespeichert wurde.

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

Die Annotation @CachePut wird verwendet, um den Cache bei jedem Aufruf der Methode updateUser zu aktualisieren. Dies ist nützlich, wenn sich die Daten ändern und der Cache mit den Änderungen in der Datenbank synchronisiert werden muss. Der Cache wird mit dem Schlüssel aktualisiert, der der Benutzer-ID entspricht.

Cache leeren

Die Annotation @CacheEvict wird verwendet, um Daten aus dem Cache zu entfernen, beispielsweise wenn ein Benutzer aus der Datenbank gelöscht wird.

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

In diesem Beispiel entfernt die Methode deleteUser den Eintrag aus dem Cache mit dem Schlüssel, der userId entspricht.

Kombinierte Cache-Operationen

Die Annotation @Caching ermöglicht es, mehrere Cache-Operationen innerhalb einer einzelnen Methode auszuführen, indem @CachePut und @CacheEvict kombiniert werden.

@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 diesem Beispiel aktualisiert die Methode updateUser gleichzeitig den Cache mit dem neuen Zustand des Benutzers mittels @CachePut und entfernt den alten Eintrag aus dem Cache mit @CacheEvict. Dies ist nützlich, wenn mehrere Cache-Operationen zur selben Zeit durchgeführt werden müssen.

1. Wann wird @CacheEvict verwendet?

2. Welchen Zweck hat die Annotation @CachePut?

question mark

Wann wird @CacheEvict verwendet?

Select the correct answer

question mark

Welchen Zweck hat die Annotation @CachePut?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 3

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

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?

Awesome!

Completion rate improved to 3.33

bookAnnotationen für die Arbeit mit Cache

Swipe um das Menü anzuzeigen

Anstelle der manuellen Verwaltung des Cachings können Annotationen verwendet werden, die den Prozess automatisch steuern. Im Folgenden werden die verfügbaren Annotationen vorgestellt.

Zwischenspeichern von Ergebnissen

Die @Cacheable-Annotation wird auf Methoden angewendet, deren Ergebnisse zwischengespeichert werden sollen. Wird die Methode erneut mit denselben Parametern aufgerufen, wird das Ergebnis aus dem Cache abgerufen.

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

In diesem Beispiel speichert die Methode getUserById das Ergebnis einer Benutzerabfrage anhand ihrer ID in einem Cache mit dem Namen "usersCache". Wird die Methode erneut mit derselben userId aufgerufen, werden die Daten aus dem Cache abgerufen, anstatt die Abfrage erneut gegen die Datenbank auszuführen.

Aktualisierung des Caches

Die Annotation @CachePut aktualisiert den Cache jedes Mal, wenn die Methode ausgeführt wird, unabhängig davon, ob das Ergebnis zuvor zwischengespeichert wurde.

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

Die Annotation @CachePut wird verwendet, um den Cache bei jedem Aufruf der Methode updateUser zu aktualisieren. Dies ist nützlich, wenn sich die Daten ändern und der Cache mit den Änderungen in der Datenbank synchronisiert werden muss. Der Cache wird mit dem Schlüssel aktualisiert, der der Benutzer-ID entspricht.

Cache leeren

Die Annotation @CacheEvict wird verwendet, um Daten aus dem Cache zu entfernen, beispielsweise wenn ein Benutzer aus der Datenbank gelöscht wird.

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

In diesem Beispiel entfernt die Methode deleteUser den Eintrag aus dem Cache mit dem Schlüssel, der userId entspricht.

Kombinierte Cache-Operationen

Die Annotation @Caching ermöglicht es, mehrere Cache-Operationen innerhalb einer einzelnen Methode auszuführen, indem @CachePut und @CacheEvict kombiniert werden.

@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 diesem Beispiel aktualisiert die Methode updateUser gleichzeitig den Cache mit dem neuen Zustand des Benutzers mittels @CachePut und entfernt den alten Eintrag aus dem Cache mit @CacheEvict. Dies ist nützlich, wenn mehrere Cache-Operationen zur selben Zeit durchgeführt werden müssen.

1. Wann wird @CacheEvict verwendet?

2. Welchen Zweck hat die Annotation @CachePut?

question mark

Wann wird @CacheEvict verwendet?

Select the correct answer

question mark

Welchen Zweck hat die Annotation @CachePut?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 3
some-alt