Heim  >  Artikel  >  Datenbank  >  So integrieren Sie SpringBoot und Redis

So integrieren Sie SpringBoot und Redis

王林
王林nach vorne
2023-05-30 12:03:40734Durchsuche

Integration von SpringBoot und der nicht relationalen Datenbank Redis

(1) Spring Data Redis-Abhängigkeitsstarter hinzufügen

So integrieren Sie SpringBoot und Redis

Fügen Sie diese Abhängigkeit ein, um ein Projekt zu erstellen. Die folgenden Abhängigkeiten werden in der Datei pom.xml des Projekts angezeigt:

So integrieren Sie SpringBoot und Redis

(2) Schreiben Sie die Entitätsklasse

Person:

package com.hardy.springbootdataredis.domain;import org.springframework.data.annotation.Id;import org.springframework.data.redis.core.RedisHash;import org.springframework.data.redis.core.index.Indexed;/**
 * @Author: HardyYao
 * @Date: 2021/6/15 */@RedisHash("persons")   // 指定操作实体类对象在Redis数据库中的存储空间public class Person {

    @Id // 标识实体类主键private String id;

    @Indexed // 标识对应属性在Redis数据库中生成二级索引private String firstname;

    @Indexedprivate String lastname;private Address address;public String getId() {return id;
    }public void setId(String id) {this.id = id;
    }public String getFirstname() {return firstname;
    }public void setFirstname(String firstname) {this.firstname = firstname;
    }public String getLastname() {return lastname;
    }public void setLastname(String lastname) {this.lastname = lastname;
    }public Address getAddress() {return address;
    }public void setAddress(Address address) {this.address = address;
    }

    @Overridepublic String toString() {return "Person{" +
                "id='" + id + ''' +
                ", firstname='" + firstname + ''' +
                ", lastname='" + lastname + ''' +
                ", address=" + address +
                '}';
    }
}

Adresse:

package com.hardy.springbootdataredis.domain;import org.springframework.data.redis.core.index.Indexed;/**
 * @Author: HardyYao
 * @Date: 2021/6/15 */public class Address {

    @Indexedprivate String city;

    @Indexedprivate String country;public String getCity() {return city;
    }public void setCity(String city) {this.city = city;
    }public String getCountry() {return country;
    }public void setCountry(String country) {this.country = country;
    }

    @Overridepublic String toString() {return "Address{" +
                "city='" + city + ''' +
                ", country='" + country + ''' +
                '}';
    }
}

In den beiden oben genannten Entitätsklassen sind mehrere Anmerkungen zu Datenoperationen der Redis-Datenbank beteiligt: ​​

  • @RedisHash("Personen ") : Wird verwendet, um den Speicherplatz des Betriebsentitätsklassenobjekts in der Redis-Datenbank anzugeben. Hier bedeutet dies, dass die Datenoperationen für die Person-Entitätsklasse im Speicherplatz mit dem Namen „Personen“ in der Redis-Datenbank gespeichert werden.

  • @Id: wird verwendet, um den Primärschlüssel der Entitätsklasse zu identifizieren. In der Redis-Datenbank wird standardmäßig ein HashKey in Form einer Zeichenfolge generiert, um die eindeutige Entitätsobjekt-ID darzustellen. Natürlich kann die ID auch manuell während der Datenspeicherung angegeben werden.

  • @Indexed: wird verwendet, um anzugeben, dass ein Sekundärindex für das entsprechende Attribut in der Redis-Datenbank generiert werden soll. Wenn diese Anmerkung verwendet wird, wird der dem Attribut entsprechende Sekundärindex in der Datenbank generiert, wodurch die Datenabfrage vereinfacht wird. Der Indexname ist derselbe wie der Attributname.

(3) Repository-Schnittstelle schreiben

SpringBoot bietet eine automatisierte Konfiguration für einige gängige Datenbanken, einschließlich Redis. Sie können das Hinzufügen, Löschen, Überprüfen und Ändern von Daten in der Datenbank vereinfachen, indem Sie die Repository-Schnittstelle implementieren:

package com.hardy.springbootdataredis.repository;import com.hardy.springbootdataredis.domain.Person;import org.springframework.data.repository.CrudRepository;import java.util.List;/**
 * @Author: HardyYao
 * @Date: 2021/6/15 */public interface PersonRepository extends CrudRepository<Person, String> {

    List<Person> findByAddress_City(String City);

}

Hinweis : Die beim Betrieb der Redis-Datenbank geschriebene Repository-Schnittstellenklasse muss die CrudRepository-Schnittstelle der untersten Ebene erben, anstatt JpaRepository zu erben (JpaRepository ist einzigartig für die JPA-Integration von SpringBoot). Natürlich können Sie auch die von SpringBoot integrierten JPA-Abhängigkeiten und Redis-Abhängigkeiten gleichzeitig in die Datei pom.xml des Projekts importieren, sodass Sie eine Schnittstelle schreiben können, die die JpaRepository-Schnittstelle erbt, um die Redis-Datenbank zu betreiben.

(4) Redis-Datenbankverbindungskonfiguration

Fügen Sie die Redis-Datenbankverbindungskonfiguration in der globalen Konfigurationsdatei application.properties hinzu. Der Beispielcode lautet wie folgt:

# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=

(5) Unit-Test-Methode schreiben

package com.hardy.springbootdataredis;import com.hardy.springbootdataredis.domain.Address;import com.hardy.springbootdataredis.domain.Person;import com.hardy.springbootdataredis.repository.PersonRepository;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import java.util.List;

@SpringBootTestclass SpringbootdataRedisApplicationTests {

    @Autowiredprivate PersonRepository repository;

    @Testpublic void savePerson() {
        Person person = new Person();
        person.setFirstname("张");
        person.setLastname("三");
        Address address = new Address();
        address.setCity("北京");
        address.setCountry("中国");
        person.setAddress(address);// 向Redis数据库添加数据Person save = repository.save(person);
    }

    @Testpublic void selectPerson() {
        List<Person> list = repository.findByAddress_City("北京");for (Person person : list) {
            System.out.println(person);
        }
    }

}

(6) Integrationstest

Öffnen Sie das visuelle Verwaltungstool des Redis-Clients und stellen Sie zunächst eine Verbindung zum lokalen Redis-Server her:

So integrieren Sie SpringBoot und Redis

Nach erfolgreicher Verbindung können Sie sehen, dass in der lokalen Redis-Datenbank keine Daten vorhanden sind:

So integrieren Sie SpringBoot und Redis

Führen Sie die beiden oben beschriebenen Skripte aus. Überprüfen Sie als Testmethode die Druckergebnisse der Konsole:

So integrieren Sie SpringBoot und Redis

Um zu überprüfen, ob die Methode save() die Daten tatsächlich in die lokale Redis-Datenbank geschrieben hat, öffnen Sie das visuelle Verwaltungstool des Redis-Clients. Aktualisieren Sie die Daten, und Sie können sehen, dass die Daten erfolgreich sind. Geschrieben:

So integrieren Sie SpringBoot und Redis

Wie aus dem obigen Bild ersichtlich ist: Die durch Ausführen der Methode save () hinzugefügten Daten werden erfolgreich in der Redis-Datenbank gespeichert. Darüber hinaus wird auf der linken Seite der Datenbankliste ein Sekundärindex ähnlich wie Adresse.Stadt, Vorname, Nachname usw. erstellt. Diese Sekundärindizes werden durch Hinzufügen der Annotation @Indexed zu den entsprechenden Attributen beim Erstellen der Personenklasse generiert. Da der dem Attribut entsprechende Sekundärindex in der Redis-Datenbank generiert wird, können gleichzeitig spezifische Dateninformationen über den Sekundärindex abgefragt werden. Beispielsweise fragt Repository.findByAddress_City („Peking“) die Daten ab, deren Indexwert Peking ist über den Adress-Stadt-Index. Wenn der Sekundärindex des entsprechenden Attributs nicht festgelegt ist, ist das über den Attributindex abgefragte Datenergebnis leer.

Das obige ist der detaillierte Inhalt vonSo integrieren Sie SpringBoot und Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen