Spring Data Redis – Caching

Im meinem letzten Beitrag zu Spring Data habe ich eine Serie an Beiträge zu diesem Thema versprochen. Hier nun der zweite Teil. Diesmal verwende ich das Spring Data Modul für den Key-Value-Store Redis.

Seit Version 3.1 beinhaltet das Spring Framework die Cache Abstraction. Damit wird das Zwischenspeichern von Daten deklarativ mittels Annotation (

,

,

, usw.) gesteuert. Spring Data Redis implementiert auf Basis der Cache Abstraction einen Cache Manager der auf Redis zurückgreift. Redis eignet sich dank seiner guten Performance hervorragend als Cache. Der Key-Value Store schafft bis zu 100.000 Schreib- und bis zu 80.000 Lese-Vorgänge in der Sekunde.

Um das Ganze etwas anschaulicher zu machen, habe ich dafür eine Demo-Anwendung erstellt. Diese könnt ihr unter springdata-redis-example anschauen und klonen.

Zunächst etwas zur Konfiguration: Für dieses Beispiel habe ich Spring Boot verwendet. Eine Einleitung zu Spring Boot bekommt ihr im Artikel Microservices und Spring Boot meines Namensvettern Waldemar Schneider.

Spring Boot bietet diverse Starter-Pakete, u.a. auch für Redis. Neben diesem habe ich auch die Pakete für Spring Data JPA und Spring Test eingebunden. Zu sehen in der 

.

Damit Redis als Cache verwendet wird, muss ein entsprechender Cache Manager definiert werden. Dazu habe ich in der Klasse

ein RedisTemplate und den Cache Manager instanziert. Die Besonderheit am RedisTemplate ist, dass die Werte als JSON gespeichert werden. Dies wird über

bewerkstelligt. Mit der Annotation

wird das Caching aktiviert.

Der Serializer arbeitet mit der Klasse

. Diese Entität besteht aus den Attributen ISBN (Primärschlüssel), Titel und Autoren.
Die Deklaration des Cachings geschieht an der Methode

des

. Das entsprechende Repository wird mittels Spring Data JPA instanziert.

sagt an dieser Stelle aus, dass das Ergebnis der Abfrage mit dem Schlüssel ISBN (#a0) zwischengespeichert werden soll. Das Attribut

gibt den Cache an. Damit ist das Caching bereits komplett konfiguriert. Sollte die Methode

weitere Male mit dem gleichen Parameter-Wert aufgerufen werden, so wird keine Abfrage ausgeführt, sondern auf den Wert im Cache zurückgegriffen.

Ein JUnit-Test belegt, dass das Ergebnis im Cache gelandet ist. Die Methode

wurde zweimal aufgerufen. zuerst beim Hinzufügen zum Zwischenspeicher und anschließend beim erneuten Aufruf von

.

Ein kurzer Blick auf die Redis-Instanz zeigt, dass das Beispiel-Buch persistiert wurde.

Redis Desktop Manager

Der Cache Manager ist so konfiguriert, dass die Einträge nach 5 Sekunden verworfen werden. Daher sollte der Cache nach einer kurzen Pause zur gegebenen ISBN

zurück liefern.

Achtung: Die hier gewählte Konfiguration dient nur als Beispiel. Durch die Verwendung des

ist das Caching auf einen Typen beschränkt. Man sollte über den Einsatz eines allgemeineren Serializers nachdenken (bspw.

).

Im nächsten Beitrag widme ich mich nochmal dem Modul Spring Data Redis und gehe dabei auf die Messaging Funktionalitäten von Redis ein.

Das könnte Dich auch interessieren...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen