我在基于JSP网络的应用程序中使用Sesame,我想知道是否有任何方法可以缓存一些一致使用的查询。
答案 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
,但基本设置将保持不变。