对于最新的稳定版本,请使用 Spring Data Redis 3.3.1Spring中文文档

对于最新的稳定版本,请使用 Spring Data Redis 3.3.1Spring中文文档

查询方法允许从方法名称自动派生简单的查找器查询,如以下示例所示:Spring中文文档

例 1.Sample Repository finder 方法
public interface PersonRepository extends CrudRepository<Person, String> {

  List<Person> findByFirstname(String firstname);
}
请确保将查找器方法中使用的属性设置为索引。
Redis 存储库的查询方法仅支持对实体和具有分页功能的实体集合的查询。

使用派生查询方法可能并不总是足以对要运行的查询进行建模。 提供对索引结构甚至自定义索引的实际匹配的更多控制。 为此,请提供返回单个值或一组值的值,如以下示例所示:RedisCallbackRedisCallbackIterableidSpring中文文档

例 2.使用 RedisCallback 的样本查找器
String user = //...

List<RedisSession> sessionsByUser = template.find(new RedisCallback<Set<byte[]>>() {

  public Set<byte[]> doInRedis(RedisConnection connection) throws DataAccessException {
    return connection
      .sMembers("sessions:securityContext.authentication.principal.username:" + user);
  }}, RedisSession.class);

下表概述了 Redis 支持的关键字,以及包含该关键字的方法实质上转换为什么:Spring中文文档

表 1.方法名称中支持的关键字
关键词 样本 Redis 代码段

AndSpring中文文档

findByLastnameAndFirstnameSpring中文文档

SINTER …:firstname:rand …:lastname:al’thorSpring中文文档

OrSpring中文文档

findByLastnameOrFirstnameSpring中文文档

SUNION …:firstname:rand …:lastname:al’thorSpring中文文档

Is, EqualsSpring中文文档

findByFirstname, ,findByFirstnameIsfindByFirstnameEqualsSpring中文文档

SINTER …:firstname:randSpring中文文档

IsTrueSpring中文文档

FindByAliveIsTrueSpring中文文档

SINTER …:alive:1Spring中文文档

IsFalseSpring中文文档

findByAliveIsFalseSpring中文文档

SINTER …:alive:0Spring中文文档

Top,FirstSpring中文文档

findFirst10ByFirstname,findTop5ByFirstnameSpring中文文档

请确保将查找器方法中使用的属性设置为索引。
Redis 存储库的查询方法仅支持对实体和具有分页功能的实体集合的查询。
表 1.方法名称中支持的关键字
关键词 样本 Redis 代码段

AndSpring中文文档

findByLastnameAndFirstnameSpring中文文档

SINTER …:firstname:rand …:lastname:al’thorSpring中文文档

OrSpring中文文档

findByLastnameOrFirstnameSpring中文文档

SUNION …:firstname:rand …:lastname:al’thorSpring中文文档

Is, EqualsSpring中文文档

findByFirstname, ,findByFirstnameIsfindByFirstnameEqualsSpring中文文档

SINTER …:firstname:randSpring中文文档

IsTrueSpring中文文档

FindByAliveIsTrueSpring中文文档

SINTER …:alive:1Spring中文文档

IsFalseSpring中文文档

findByAliveIsFalseSpring中文文档

SINTER …:alive:0Spring中文文档

Top,FirstSpring中文文档

findFirst10ByFirstname,findTop5ByFirstnameSpring中文文档

排序查询方法结果

Redis 存储库允许使用各种方法来定义排序顺序。 Redis 本身在检索哈希或集时不支持动态排序。 因此,Redis 存储库查询方法在返回结果之前会构造一个应用于结果的 。 让我们看一下下面的例子:ComparatorListSpring中文文档

例 3.对查询结果进行排序
interface PersonRepository extends RedisRepository<Person, String> {

  List<Person> findByFirstnameOrderByAgeDesc(String firstname); (1)

  List<Person> findByFirstname(String firstname, Sort sort);   (2)
}
1 从方法名称派生的静态排序。
2 使用方法参数进行动态排序。
1 从方法名称派生的静态排序。
2 使用方法参数进行动态排序。