请解释Play的Cache实现

时间:2012-01-26 15:22:21

标签: caching playframework

播放会自动缓存数据吗? 我正在尝试阅读其他人编写的代码,并且他在foreach循环中执行Cache.get。这也是程序停滞的地方。

此人没有在与此方法相关的任何其他地方使用Cache.set,因此我不明白发生了什么。

代码示例:

for(aList page: pages){
    //blah blah code;

    Page.PageInfo pageinfo = (Page.PageInfo) Cache.get(page.url);

    //blah blah code;
}

然而,他确实在另一个foreach循环中使用了这个foreach循环之后的Cache.set但是我不明白如果没有设置任何东西他会得到什么。

1 个答案:

答案 0 :(得分:0)

Play有自己的Cache API,可以使用默认的EHCache实现或更高级的内存,如Memcached。

缓存只是一个缓存,因此无法保证Cache.get()调用始终提供结果。在Cache.get()调用之后,您提供的代码段显然缺少空检查,以查看是否找到了结果。如果Cache没有该值,那么你应该从其他地方获取它(数据库,通常,这是更昂贵的操作,但保证返回结果)或继续工作而没有值,如果它不重要。