Kursinhalt
Einführung in Redis
Einführung in Redis
Annotationen für die Arbeit mit Cache
Anstatt das Caching manuell zu verwalten, können Sie Annotationen verwenden, die den Prozess automatisch verwalten. Werfen wir einen Blick auf die verfügbaren Annotationen.
Caching-Ergebnisse
Die @Cacheable
Annotation wird auf Methoden angewendet, deren Ergebnisse gecached werden sollen. Wenn die Methode erneut mit denselben Parametern aufgerufen wird, wird das Ergebnis aus dem Cache abgerufen.
In diesem Beispiel speichert die getUserById
Methode das Ergebnis einer Benutzerabfrage nach ihrer ID
in einem Cache namens "usersCache"
. Wenn die Methode erneut mit derselben userId
aufgerufen wird, werden die Daten aus dem Cache abgerufen, anstatt die Abfrage gegen die Datenbank auszuführen.
Aktualisierung des Caches
Die @CachePut
Annotation aktualisiert den Cache jedes Mal, wenn die Methode ausgeführt wird, unabhängig davon, ob das Ergebnis zuvor zwischengespeichert wurde.
Die @CachePut
Annotation wird verwendet, um den Cache jedes Mal zu aktualisieren, wenn die updateUser
Methode aufgerufen wird. Dies ist nützlich, wenn sich die Daten ändern und Sie den Cache mit den Änderungen in der Datenbank synchronisieren müssen. Der Cache wird mit dem Schlüssel aktualisiert, der der Benutzer-ID entspricht.
Cache leeren
Die @CacheEvict
Annotation wird verwendet, um Daten aus dem Cache zu entfernen, zum Beispiel wenn ein Benutzer aus der Datenbank gelöscht wird.
In diesem Beispiel entfernt die deleteUser
Methode den Eintrag aus dem Cache mit dem Schlüssel, der userId
entspricht.
Kombinierte Cache-Operationen
Die @Caching
Annotation ermöglicht es, mehrere Cache-Operationen innerhalb einer einzelnen Methode durchzuführen, indem @CachePut
und @CacheEvict
kombiniert werden.
In diesem Beispiel aktualisiert die updateUser
-Methode gleichzeitig den Cache mit dem neuen Zustand des Benutzers unter Verwendung von @CachePut
und entfernt den alten Eintrag aus dem Cache unter Verwendung von @CacheEvict
. Dies ist nützlich, wenn Sie mehrere Cache-Operationen gleichzeitig ausführen müssen.
1. Wann würden Sie @CacheEvict
verwenden?
2. Was ist der Zweck der @CachePut
-Annotation?
Danke für Ihr Feedback!