java如何将页面每次请求获得的数据缓存起来供使用?

曾鹏 发布于 2012/10/09 10:46
阅读 3K+
收藏 0

情景是这样的:前台页面通过ajax根据后台action返回的flag标示作为判断条件,如何为真,将继续请求action中的某个方法,直到flag为假为止。每次请求后台都会查询一张数据库表获取list数据,如何将每次请求该方法获取的list数据缓存起来?因为最后要将每次得到的list数据都展示在前台页面。

该如何缓存呢?我现在用过一些方法,但是下一次请求的时候,将上一次请求得到的list数据清空了,只能保存当前请求得到的list,做不到将每次请求的list都缓存起来的效果,该如何解决?

请高人指点!

加载中
0
sxgkwei
sxgkwei

这个简单啊,你这个核心的地方,就是action这儿不去查数据库,而拿到缓存的数据再直接返回到前台嘛。核心代码逻辑就是:

long obsoleteTime=1天;

List list=cache.get("abc",obsoleteTime);

if(list==null){

list=manager.search(..);

cache.set("abc",list);

}

return list;

这样的缓存策略很多的啊。比如oscache就可以达到要求,而且用起来很简单,只要一个jar,自己抽象一个cache的接口,套上去,就能用了。

0
曾鹏

如果不查询数据库,怎么能得到list数据呢?必须要先查询数据库,每次请求查询一张表的数据,表名都是带时间戳的,形如user_20121009这样的表名,每天一张表。查询某个时间段内的所有数据表数据,每次请求值查询一张表的数据。所以要查数据库才能得到list数据。

0
曾鹏
其实目的就是要把每次请求获取的list数据叠加放在一起,例如:用户查询2012-10-08~2012-10-10期间的数据,那么应该查询形如user_20121008、user_20121009、user_20121010三张表,但是每次请求后台只查询一张表的数据,需要将每次查询获取的数据表数据叠加起来,显示在前台。现在困难的就是前一次请求获取的数据没了,这样到请求完毕的时候只把最后一次请求的数据显示在页面了,这样就有问题。必须把这个时间段内的所有数据显示在页面。
返回顶部
顶部