EHcache

来源:互联网 发布:纽约州立石溪分校知乎 编辑:程序博客网 时间:2024/05/18 00:50
// net.sf.ehcache.CacheManager manager =
// net.sf.ehcache.CacheManager.newInstance();
CacheManager manager = CacheManager.create();
CacheConfiguration cacheConfig = new CacheConfiguration();
// 定义属性查询
// 指定当前缓存的最大堆内存值为100M
cacheConfig.name("testCache").maxBytesLocalHeap(100, MemoryUnit.MEGABYTES);
// 新建一个Searchable对象
Searchable searchable = new Searchable();
// 给Cache配置Searchable对象,表明该Cache是一个可查询的Cache
cacheConfig.searchable(searchable);


// Searchalbe对象添加查询属性
searchable.addSearchAttribute(new SearchAttribute().name("name"));
// 使用CacheConfig创建Cache对象
Cache cache = new Cache(cacheConfig);
// 把Cache对象纳入CacheManager的管理中
manager.addCache(cache);


Cache testCache = manager.getCache("testCache");


// 模糊查询测试
User u = null;
for (int i = 0; i < 100; i++) {
u = new User(i, "22" + i, "" + i + "王鑫");
testCache.put(new Element(u.getId(), u));
}
// 获取名称为name的可查询属性Attribute对象
Attribute<String> name = testCache.getSearchAttribute("name");
// 创建一个用于查询的Query对象
Query query = testCache.createQuery();
query.includeKeys();
query.includeValues();
// 给当前query添加一个筛选条件——可查询属性name的值等于wanjunjun
query.addCriteria(name.ilike("2"));
// 执行查询操作,返回查询结果Results
Results results = query.execute();
// 获取Results中包含的所有的Result对象
List<Result> resultList = results.all();
for (Result result : resultList) {
// 结果中包含key时可以获取key
if (results.hasKeys()) {
System.out.println(result.getKey());
}
// 结果中包含value时可以获取value
if (results.hasValues()) {
System.out.println(((User) result.getValue()).getName());
}
}
manager.shutdown();
原创粉丝点击