Einführung in Spring Data Redis

1. Übersicht

Dieser Artikel ist eine Einführung in Spring Data Redis , das Redis - dem beliebten speicherinternen Datenstrukturspeicher - die Abstraktionen der Spring Data-Plattform bereitstellt.

Redis wird von einer Keystore-basierten Datenstruktur gesteuert, um Daten zu speichern, und kann als Datenbank, Cache, Nachrichtenbroker usw. verwendet werden.

Wir können die gängigen Muster von Spring Data (Vorlagen usw.) verwenden und gleichzeitig die traditionelle Einfachheit aller Spring Data-Projekte nutzen.

2. Maven-Abhängigkeiten

Beginnen wir mit der Deklaration der Spring Data Redis-Abhängigkeiten in der Datei pom.xml :

 org.springframework.data spring-data-redis 2.3.3.RELEASE   redis.clients jedis 3.3.0 jar 

Die neuesten Versionen von spring-data- redis und jedis können von Maven Central heruntergeladen werden.

Alternativ können wir den Spring Boot-Starter für Redis verwenden, wodurch separate Spring-Daten- und Jedis- Abhängigkeiten überflüssig werden :

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

Auch hier bietet Maven Central die neuesten Versionsinformationen.

3. Die Redis-Konfiguration

Um die Verbindungseinstellungen zwischen dem Anwendungsclient und der Redis-Serverinstanz zu definieren, müssen Sie einen Redis-Client verwenden.

Es gibt eine Reihe von Redis-Client-Implementierungen für Java. In diesem Tutorial verwenden wir Jedis - eine einfache und leistungsstarke Redis-Client-Implementierung .

Es gibt eine gute Unterstützung für die XML- und Java-Konfiguration im Framework. Für dieses Tutorial verwenden wir die Java-basierte Konfiguration.

3.1. Java-Konfiguration

Beginnen wir mit den Konfigurations-Bean-Definitionen:

@Bean JedisConnectionFactory jedisConnectionFactory() { return new JedisConnectionFactory(); } @Bean public RedisTemplate redisTemplate() { RedisTemplate template = new RedisTemplate(); template.setConnectionFactory(jedisConnectionFactory()); return template; } 

Die Konfiguration ist recht einfach. Zunächst definieren wir mit dem Jedis-Client eine connectionFactory .

Dann haben wir eine RedisTemplate mit der jedisConnectionFactory definiert. Dies kann zum Abfragen von Daten mit einem benutzerdefinierten Repository verwendet werden.

3.2. Benutzerdefinierte Verbindungseigenschaften

Möglicherweise haben Sie bereits bemerkt, dass die üblichen verbindungsbezogenen Eigenschaften in der obigen Konfiguration fehlen. Beispielsweise fehlen die Serveradresse und der Port in der Konfiguration. Der Grund ist einfach: In unserem Beispiel verwenden wir die Standardeinstellungen.

Wenn wir jedoch die Verbindungsdetails konfigurieren müssen, können wir die Konfiguration von jedisConnectionFactory jederzeit wie folgt ändern :

@Bean JedisConnectionFactory jedisConnectionFactory() { JedisConnectionFactory jedisConFactory = new JedisConnectionFactory(); jedisConFactory.setHostName("localhost"); jedisConFactory.setPort(6379); return jedisConFactory; }

4. Redis Repository

Verwenden wir für unsere Beispiele eine Student- Entität:

@RedisHash("Student") public class Student implements Serializable { public enum Gender { MALE, FEMALE } private String id; private String name; private Gender gender; private int grade; // ... }

4.1. Das Spring Data Repository

Lassen Sie uns nun das StudentRepository wie folgt erstellen :

@Repository public interface StudentRepository extends CrudRepository {}

5. Datenzugriff mit StudentRepository

Durch die Erweiterung von CrudRepository in StudentRepository erhalten wir automatisch einen vollständigen Satz von Persistenzmethoden, die CRUD-Funktionen ausführen.

5.1. Speichern eines neuen Schülerobjekts

Speichern wir ein neues Schülerobjekt im Datenspeicher:

Student student = new Student( "Eng2015001", "John Doe", Student.Gender.MALE, 1); studentRepository.save(student);

5.2. Abrufen eines vorhandenen Schülerobjekts

Wir können die korrekte Einfügung des Schülers im vorherigen Abschnitt überprüfen, indem wir die Schülerdaten abrufen:

Student retrievedStudent = studentRepository.findById("Eng2015001").get();

5.3. Aktualisieren eines vorhandenen Schülerobjekts

Lassen Sie uns den Namen des oben abgerufenen Schülers ändern und erneut speichern:

retrievedStudent.setName("Richard Watson"); studentRepository.save(student);

Schließlich können wir die Daten des Schülers erneut abrufen und überprüfen, ob der Name im Datenspeicher aktualisiert wurde.

5.4. Vorhandene Studentendaten löschen

Wir können die oben eingefügten Studentendaten löschen:

studentRepository.deleteById(student.getId());

Jetzt können wir nach dem Schülerobjekt suchen und überprüfen, ob das Ergebnis null ist .

5.5. Alle Studentendaten finden

Wir können einige Schülerobjekte einfügen:

Student engStudent = new Student( "Eng2015001", "John Doe", Student.Gender.MALE, 1); Student medStudent = new Student( "Med2015001", "Gareth Houston", Student.Gender.MALE, 2); studentRepository.save(engStudent); studentRepository.save(medStudent);

Dies können wir auch erreichen, indem wir eine Sammlung einfügen. Dafür gibt es eine andere Methode - saveAll () - die ein einzelnes iterierbares Objekt akzeptiert, das mehrere Schülerobjekte enthält, die wir beibehalten möchten.

Um alle eingefügten Schüler zu finden, können wir die findAll () -Methode verwenden:

List students = new ArrayList(); studentRepository.findAll().forEach(students::add);

Dann können wir schnell die Größe der Schülerliste überprüfen oder eine größere Granularität überprüfen, indem wir die Eigenschaften jedes Objekts überprüfen.

6. Fazit

In diesem Tutorial haben wir die Grundlagen von Spring Data Redis durchgearbeitet. Der Quellcode der obigen Beispiele befindet sich in einem GitHub-Projekt.