论坛首页 Java企业应用论坛

关于分页查询如何做缓存的问题

浏览 13959 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-04-13  
我能想到的有两种处理方式:

(1)缓存的是一页数据的list,等到过期时间到了,自动删除。这种方案的问题是:实时性太差了!

(2)缓存的是一个一个的对象,当分页查询的时候,首先是查数据库,把数据的id查出来,然后根据id查缓存,如果查不到就再查数据库。这种方案的问题是:及时缓存里面有完整的一夜的数据,也会额外的查一次数据库。并且,如果缓存的数据被删除掉,会多次查询,才能构造出完整的一页数据,而直接查数据库的话,只需要一次查询!

这两种方式的弊端都很明显,大家是如何处理的呢?
   发表时间:2012-04-14   最后修改:2012-04-17

隐身

1 请登录后投票
   发表时间:2012-04-16  
F.U.C.K 写道

 

感谢回帖,不过跟我的问题貌似不搭边,谢了

0 请登录后投票
   发表时间:2012-04-16  
异步查询可以吗?
比如第一次查询2页数据,点击下一页的时候,显示缓存的数据,异步去取下下页的数据。呵呵
有一定的命中率问题。
goldenfish1919 写道
我能想到的有两种处理方式:

(1)缓存的是一页数据的list,等到过期时间到了,自动删除。这种方案的问题是:实时性太差了!

(2)缓存的是一个一个的对象,当分页查询的时候,首先是查数据库,把数据的id查出来,然后根据id查缓存,如果查不到就再查数据库。这种方案的问题是:及时缓存里面有完整的一夜的数据,也会额外的查一次数据库。并且,如果缓存的数据被删除掉,会多次查询,才能构造出完整的一页数据,而直接查数据库的话,只需要一次查询!

这两种方式的弊端都很明显,大家是如何处理的呢?

0 请登录后投票
   发表时间:2012-04-16  
我认为,楼主需要清楚什么情景下适合用缓存解决问题?

我个人认为:
某些基本资源信息,非常常用,而获取该资源的代价又比较高的情况下,适合于缓存。

而楼主的分页查询,采用缓存,请楼主再衡量一下是否符合既定情景。
0 请登录后投票
   发表时间:2012-04-16  
分页为什么要做缓存?难道你们会一遍又一遍地刷新或者访问同一页的信息?
0 请登录后投票
   发表时间:2012-04-16  
楼主分页查询没有必要做缓存。。。
0 请登录后投票
   发表时间:2012-04-16  
缓存的本质就是对不易变的数据进行保存,如果你数据本身就是易变的那分页就没有意义了啊。

单条数据缓存容易,变化率也不高,你一个分页的页面变化很频繁的啊,有可能你现在缓存了,几秒钟后这个缓存就失效了。没有意义的吧! 并且你也得考虑实现,页面缓存的话肯定是大量数据的缓存,那么你的内存够大么。
0 请登录后投票
   发表时间:2012-04-16  
    我也考虑过这种问题处理,缓存数据使用更使用场景非常有关,如果数据变换频繁,而且又要保持实时性,这样还是不要使用缓存,有可能更慢!!!对于你的第二种方法使用可能仍然不能降低资源占用,而且也无法保证数据一致性。我的处理方法主要是减少数据访问次数,缓存查询条件下的总记录数,每次缓存每次查询记录页,翻页时如果页数已经在缓存中就直接显示,如果没有则查询数据库!
0 请登录后投票
   发表时间:2012-04-16  
缓存就是缓存 和分不分页有什么关系。。。
最低级的:放到map
高级点的:放到map xxx时间过期
更高级点的:。。。。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics