Ehcache 2.4 正式版发布了,最大的改进就是缓存搜索功能

搜索使用方法:
Results results = cache.createQuery().includeKeys().addCriteria(age.eq(32).and(gender.eq("male"))).execute();

同时 Ehcache 支持了达 2TB 的数据,适合大规模应用。什么是可搜索的缓存?
你可对于定义的key和value的索引以及属性进行搜索。下面是一个定义可搜索缓存的配置:

<cache name="cache3" maxElementsInMemory="10000" >
     <searchable>
          <searchAttribute name="age"/>
          <searchAttribute name="gender" expression="value.getGender()"/>
     </searchable>
</cache>
搜索查询语言
Ehcache Search 引入了 EQL,这是一个面向对象的查询语言,特别对Java程序员来说非常熟悉的语法。
下面是一个完整的例子:

Query query = cache.createQuery();
query.includeKeys();
query.includeValues();
query.addCriteria(name.ilike("Greg*").and(gender.eq(Gender.MALE))).addOrderBy(age, Direction.ASCENDING).maxResults(10);
Results results = query.execute();
System.out.println(" Size: " + results.size());
for (Result result : results.all()) {
    System.out.println("Got: Key[" + result.getKey()+ "] Value class [" + result.getValue().getClass()+ "] Value [" + result.getValue() + "]");
}

EQL 功能很强大,有很多标准查询例如 ilike、lt、gt、between 等可用来构建复杂的查询,同时还提供一些聚合函数,例如 min, max, average, sum 以及 count 用来对结果进行统计。
和 NoSQL 相同的是,EQL 只用于单个缓存节点,不包括联合查询,也就是说不能在两个缓存 region 进行 join 查询。如果要对两个缓存region进行查询,你需要自己对搜索结果进行合并。
Ehcache 2.4 的 core 包中已经包含了搜索的功能。

你可能感兴趣的:(cache,NoSQL)