Die eigenschaftsbasierte Konfiguration von Spring Data Redis

1. Übersicht

Eine der Hauptattraktionen von Spring Boot besteht darin, dass die Konfiguration von Drittanbietern häufig auf wenige Eigenschaften reduziert wird.

In diesem Tutorial werden wir sehen, wie Spring Boot die Arbeit mit Redis vereinfacht.

2. Warum Redis?

Redis ist einer der beliebtesten speicherinternen Datenstrukturspeicher. Aus diesem Grund kann es als Datenbank, Cache und Nachrichtenbroker verwendet werden.

In Bezug auf die Leistung ist es bekannt für seine schnelle Reaktionszeit. Infolgedessen kann es Hunderttausende von Vorgängen pro Sekunde bedienen und ist leicht skalierbar.

Und es passt gut zu Spring Boot-Anwendungen . Zum Beispiel können wir es als Cache in unserer Microservices-Architektur verwenden. Wir können es auch als NoSQL-Datenbank verwenden.

3. Redis ausführen

Erstellen Sie zunächst eine Redis-Instanz mit ihrem offiziellen Docker-Image.

$ docker run -p 16379:6379 -d redis:6.0 redis-server --requirepass "mypass"

Oben haben wir gerade eine Redis-Instanz auf Port 16379 mit dem Kennwort mypass gestartet .

4. Starter

Spring bietet uns hervorragende Unterstützung für die Verbindung unserer Spring Boot-Anwendungen mit Redis mithilfe von Spring Data Redis.

Stellen wir als nächstes sicher, dass wir die Spring-Boot-Starter-Data-Redis- Abhängigkeit in unserer pom.xml haben :

 org.springframework.boot spring-boot-starter-data-redis 2.2.6.RELEASE 

5. Salat

Als nächstes konfigurieren wir den Client.

Der Java Redis-Client, den wir verwenden, ist Lettuce, da Spring Boot ihn standardmäßig verwendet. Wir hätten aber auch Jedis benutzen können.

In beiden Fällen ist das Ergebnis eine Instanz von RedisTemplate :

@Bean public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate template = new RedisTemplate(); template.setConnectionFactory(connectionFactory); // Add some specific configuration here. Key serializers, etc. return template; }

6. Eigenschaften

Wenn wir Salat verwenden, müssen wir die RedisConnectionFactory nicht konfigurieren . Spring Boot erledigt das für uns.

Wir müssen also nur noch einige Eigenschaften in unserer Datei application.properties angeben :

spring.redis.database=0 spring.redis.host=localhost spring.redis.port=16379 spring.redis.password=mypass spring.redis.timeout=60000

Beziehungsweise:

  • Datenbank legt den Datenbankindex fest, der von der Verbindungsfactory verwendet wird
  • Host ist der Ort, an dem sich der Server-Host befindet
  • Port gibt den Port an, an dem der Server empfangsbereit ist
  • Passwort ist das Login-Passwort für den Server und
  • Zeitüberschreitung legt das Verbindungszeitlimit fest

Natürlich gibt es viele andere Eigenschaften, die wir konfigurieren können. Die vollständige Liste der Konfigurationseigenschaften finden Sie in der Spring Boot-Dokumentation.

7. Demo

Versuchen wir es abschließend in unserer Anwendung. Wenn wir eine vorstellen Buch Klasse und eine BookRepository, können wir erstellen und abrufen Buch s, mit unserem RedisTemplate mit Redis als unseren Backend zu interagieren:

@Autowired private RedisTemplate redisTemplate; public void save(Book book) { redisTemplate.opsForValue().set(book.getId(), book); } public Book findById(Long id) { return redisTemplate.opsForValue().get(id); }

Standardmäßig verwaltet Lettuce die Serialisierung und Deserialisierung für uns, sodass an dieser Stelle nichts mehr zu tun ist. Es ist jedoch gut zu wissen, dass dies auch konfiguriert werden kann.

Eine weitere wichtige Funktion ist, dass RedisTemplate threadsicher ist und daher in Umgebungen mit mehreren Threads ordnungsgemäß funktioniert.

8. Fazit

In diesem Artikel haben wir Spring Boot so konfiguriert, dass es über Kopfsalat mit Redis kommuniziert. Und wir haben es mit einem Starter, einer einzelnen @ Bean- Konfiguration und einer Handvoll Eigenschaften erreicht.

Zum Abschluss haben wir RedisTemplate verwendet , damit Redis als einfaches Backend fungiert.

Das vollständige Beispiel finden Sie auf GitHub.