Annotationen 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?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
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
Annotationen 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?
Danke für Ihr Feedback!