芝麻缓存常见查询

时间:2014-11-19 23:23:47

标签: caching sesame

我在基于JSP网络的应用程序中使用Sesame,我想知道是否有任何方法可以缓存一些一致使用的查询。

1 个答案:

答案 0 :(得分:1)

我认为你想要的是"缓存"是具有特定值的给定查询的查询结果。您可以自己轻松构建此类缓存。只需为一般查询创建一个类,该类在内部保存对HashMap的引用,该HashMap从值键(例如您的示例查询的placeid)映射到查询结果:

HashMap<URI, TupleQueryResult> cache = new HashMap<>();

然后你要做的就是检查一个给定的地方id,它是否存在于缓存中。如果不是,则执行查询,返回结果并将其实现为MutableTupleQueryResult,然后将其放入该缓存中:

if (!cache.contains(placeId)) {
       // reuse the prepared query with the specific binding for which we want a result
       preparedQuery.setBinding("placeid", placeId);

       // execute the query and add the result to a result object we can reuse multiple times
       TupleQueryResult result = new MutableTupleQueryResult(preparedQuery.evaluate());

       // put the result in the cache.
       cache.put(placeId, result);
}
return cache.get(placeId);

如果你想要一些更复杂的东西(例如某些东西在一段时间之后抛出缓存的项目,或者在你的缓存上设置一个大小限制),我会看一下像Guava Cache这样的东西一个简单的HashMap,但基本设置将保持不变。