Redis - L2 キャッシュ

ebean.redis のプロパティを main/resources/application.yaml に設定して、使用する redis サーバーを構成します。以下を参照してください。

DatabaseFactory と DatabaseConfig 経由で プログラム的に データベースを作成するときにプロパティの構成が機能するためには、DatabaseConfig.loadFromProperties() を使ってプロパティを読み込む必要があります。

ebean:
  redis:
    server: test-server
    port: 99
    minIdle: 2
    maxIdle: 20
    maxTotal: 20
    maxWaitMillis: 300

テスト目的のために、test/resources/application-test.yamlebean.test.redis プロパティを latest に設定します。これによって ebean-test が L2 キャッシュと共に使用するための redis docker コンテナを自動的に起動します。

ebean:
  test:
    redis: latest
    platform: h2 # h2, postgres, mysql, oracle, sqlserver, sqlite
    ddlMode: dropCreate # none | dropCreate | migrations | create
    dbName: my_app

ebean-redis 依存関係

ebean-redis を依存関係として追加します。これにより、L2 キャッシュ サービスとして ebean に自動的に登録されます。

<dependency>
  <groupId>io.ebean</groupId>
  <artifactId>ebean-redis</artifactId>
  <version>13.25.0</version>
</dependency>

@Cache

@Cache で注釈が付けられたエンティティ ビーンは、L2 キャッシュに redis を使用するようになります。

@Cache(enableQueryCache = true, nearCache = true, naturalKey = "name")
@Entity
public class Person extends EBase {

  public enum Status {
    NEW,
    ACTIVE,
    INACTIVE
  }

  @Index(unique = true)
  String name;

  Status status;

  LocalDate localDate;

  String notes;

  public Person(String name) {
    this.name = name;
    this.status = Status.NEW;
  }
  ...
}

Docker コンテナ

Docker コンテナ バージョンの Redis をプログラム的に起動できます。

以下では、ebean-test と共に提供される ebean-test-docker 依存関係を使用します。ebean-test に依存関係がない場合は、io.ebean:ebean-test-docker:5.0 を依存関係として追加します。

package main;

import io.ebean.docker.commands.RedisContainer;

public class Main {

  public static void main(String[] args) {

    RedisContainer container = RedisContainer.newBuilder("latest")
      .build();

      container.start();
  }
}