この依存関係を導入してプロジェクトを作成します。次の依存関係がプロジェクト pom.xml ファイルに表示されます:
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 + '}'; } }
を記述します。 Address:
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 + ''' + '}'; } }
上記の 2 つのエンティティ クラスには、Redis データベースのデータ操作に関するいくつかのアノテーションが含まれています:
@RedisHash("persons"): used to指定 Redis データベース内のエンティティ クラス オブジェクトの記憶領域を操作します。ここでは、Person エンティティ クラスのデータ操作が、Redis データベース内の person という名前の記憶領域に保存されることを意味します。
@Id: エンティティ クラスの主キーを識別するために使用されます。 Redis データベースでは、一意のエンティティ オブジェクト ID を表す文字列形式の HashKey がデフォルトで生成されます。もちろん、データの保存中に ID を手動で指定することもできます。
@Indexed: Redis データベース内の対応する属性のセカンダリ インデックスを生成することを指定するために使用されます。このアノテーションを使用すると、属性に対応するセカンダリ インデックスがデータベース内に生成され、データのクエリが容易になります (インデックス名は属性名と同じです)。
SpringBoot は、Redis を含む一部の一般的なデータベースの自動構成を提供し、リポジトリ インターフェイスを実装することでデータベース内のデータを簡素化できます。追加、削除、確認、変更の操作を実行します。
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); }
Note: Redis データベースを操作するときに作成される Repository インターフェース クラスは、JpaRepository (JpaRepository) を継承するのではなく、最下位レベルの CrudRepository インターフェースを継承する必要があります。 SpringBoot に統合された JPA 独自のものです)。もちろん、SpringBoot で統合した JPA の依存関係と Redis の依存関係を同時にプロジェクトの pom.xml ファイルにインポートして、JpaRepository インターフェースを継承したインターフェースを記述して Redis データベースを操作することもできます。
Redis データベース接続設定をプロジェクトのグローバル設定ファイル application.properties に追加します。サンプルコードは次のとおりです。 5) 単体テストメソッドの記述
# Redis服务器地址 spring.redis.host=127.0.0.1 # Redis服务器连接端口 spring.redis.port=6379 # Redis服务器连接密码(默认为空) spring.redis.password=
接続が成功すると、ローカル Redis データベースにデータがないことがわかります。
#上記の 2 つのテスト メソッドを実行し、コンソールの印刷結果:
save() メソッドが実際にローカル Redis データベースにデータを書き込んだことを確認するには、Redis クライアントのビジュアル管理ツールを開き、
# 上図からわかるように、save() メソッドを実行して追加されたデータは次のようになります。 Redis データベースに正常に保存されました。さらに、データベース リストの左側に、address.city、firstname、lastname などのようなセカンダリ インデックスが形成されます。これらのセカンダリ インデックスは、Person クラスの作成時に、対応する属性に @Indexed アノテーションを追加することによって生成されます。同時に、属性に対応するセカンダリ インデックスが Redis データベースに生成されるため、セカンダリ インデックスを通じて特定のデータ情報をクエリすることができます。たとえば、 repository.findByAddress_City ("Beijing") は、インデックス値が北京であるデータをクエリします。 address.city インデックス情報を通じて。対応する属性のセカンダリ インデックスが設定されていない場合、属性インデックスを通じてクエリされたデータの結果は空になります。
以上がSpringBoot と Redis を統合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。