Einführung in Spring Data Redis

Einführung in Spring Data Redis

1. Überblick

Dieser Artikel istan introduction to Spring Data Redis und bietet die Abstraktionen der Spring Data-Plattform fürRedis - den beliebten speicherinternen Datenstrukturspeicher.

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 inpom.xml:


    org.springframework.data
    spring-data-redis
    2.0.3.RELEASE
 


    redis.clients
    jedis
    2.9.0
    jar

Die neuesten Versionen vonspring-data-redis undjedis können von Maven Central heruntergeladen werden.

3. Die Redis-Konfiguration

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

Es gibt eine Reihe von Redis-Client-Implementierungen für Java. In diesem Tutorial werdenwe’ll use Jedis – a simple and powerful Redis client implementation.

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-ClientconnectionFactory.

Dann haben wirRedisTemplate mitjedisConnectionFactory. definiert. Dies kann zum Abfragen von Daten mit einem benutzerdefinierten Repository verwendet werden.

3.2. Benutzerdefinierte Verbindungseigenschaften

Möglicherweise haben Sie bereits bemerkt, dass in der obigen Konfiguration die üblichen verbindungsbezogenen Eigenschaften 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 vonjedisConnectionFactoryjederzeit 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 die EntitätStudent:

@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

Erstellen wir nun dieStudentRepository wie folgt:

@Repository
public interface StudentRepository extends CrudRepository {}

5. Datenzugriff mitStudentRepository

Durch Erweitern vonCrudRepository inStudentRepository 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 Eingabe 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

Ändern Sie den Namen des oben abgerufenen Schülers und speichern Sie ihn erneut:

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 eingegebenen Studentendaten löschen:

studentRepository.deleteById(student.getId());

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

5.5. Alle Schülerdaten finden

Wir können einige Studentenobjekte 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 einzelnesIterable-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 MethodefindAll()verwenden:

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

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

6. Fazit

In diesem Lernprogramm wurden die Grundlagen von Spring Data Redis erläutert. Der Quellcode der obigen Beispiele ist ina GitHub project angegeben.