Redis - L2 缓存
通过在 main/resources/application.yaml
中设置 ebean.redis
属性来配置要使用的 redis 服务器,如下所示
请注意,当我们通过 DatabaseFactory 和 DatabaseConfig 以编程方式创建 Database 时,属性配置才能起作用,然后我们需要确保使用 DatabaseConfig.loadFromProperties()
来加载属性。
ebean:
redis:
server: test-server
port: 99
minIdle: 2
maxIdle: 20
maxTotal: 20
maxWaitMillis: 300
出于测试目的,在 test/resources/application-test.yaml
中将 ebean.test.redis
属性设置为 latest
。这将使 ebean-test 自动启动一个 redis docker 容器,以用于 L2 缓存。
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
作为依赖项。这将自动将其自身注册到 ebean 中作为 L2 缓存服务。
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-redis</artifactId>
<version>13.25.0</version>
</dependency>
@Cache
使用 @Cache
注释的实体 bean 现在将使用 redis 进行 L2 缓存。
@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-docker
依赖项,该依赖项已随 ebean-test
一起提供。如果我们没有对 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();
}
}