ホームページ  >  記事  >  データベース  >  SpringBoot と Redis を統合する方法

SpringBoot と Redis を統合する方法

王林
王林転載
2023-05-30 12:03:40734ブラウズ

SpringBoot と非リレーショナル データベース Redis の統合

(1) Spring Data Redis 依存関係スターターを追加

SpringBoot と Redis を統合する方法

この依存関係を導入してプロジェクトを作成します。次の依存関係がプロジェクト pom.xml ファイルに表示されます:

SpringBoot と Redis を統合する方法

(2) エンティティ クラス

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 データベース内の対応する属性のセカンダリ インデックスを生成することを指定するために使用されます。このアノテーションを使用すると、属性に対応するセカンダリ インデックスがデータベース内に生成され、データのクエリが容易になります (インデックス名は属性名と同じです)。

(3) リポジトリ インターフェイスの作成

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 データベースを操作することもできます。

(4) Redis データベース接続設定

Redis データベース接続設定をプロジェクトのグローバル設定ファイル application.properties に追加します。サンプルコードは次のとおりです。 5) 単体テストメソッドの記述

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

(6) 統合テスト

Redis クライアントのビジュアル管理ツールを開き、まずローカル Redis サーバーに接続します:

SpringBoot と Redis を統合する方法接続が成功すると、ローカル Redis データベースにデータがないことがわかります。

#上記の 2 つのテスト メソッドを実行し、コンソールの印刷結果: SpringBoot と Redis を統合する方法

save() メソッドが実際にローカル Redis データベースにデータを書き込んだことを確認するには、Redis クライアントのビジュアル管理ツールを開き、 SpringBoot と Redis を統合する方法

# 上図からわかるように、save() メソッドを実行して追加されたデータは次のようになります。 Redis データベースに正常に保存されました。さらに、データベース リストの左側に、address.city、firstname、lastname などのようなセカンダリ インデックスが形成されます。これらのセカンダリ インデックスは、Person クラスの作成時に、対応する属性に @Indexed アノテーションを追加することによって生成されます。同時に、属性に対応するセカンダリ インデックスが Redis データベースに生成されるため、セカンダリ インデックスを通じて特定のデータ情報をクエリすることができます。たとえば、 repository.findByAddress_City ("Beijing") は、インデックス値が北京であるデータをクエリします。 address.city インデックス情報を通じて。対応する属性のセカンダリ インデックスが設定されていない場合、属性インデックスを通じてクエリされたデータの結果は空になります。 SpringBoot と Redis を統合する方法

以上がSpringBoot と Redis を統合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。