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

发布于 2021-11-18 19:09:00 字数 274 浏览 839 评论 3

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

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

请高人指点!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

柳絮泡泡 2021-11-20 02:31:54

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

柒夜笙歌凉 2021-11-20 00:08:41

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

疾风者 2021-11-19 17:23:21

这个简单啊,你这个核心的地方,就是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的接口,套上去,就能用了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文