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 包中已经包含了搜索的功能。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值