日期:2014-05-20  浏览次数:20839 次

分页查询如何做缓存的问题
我能想到的有两种处理方式:
(1)缓存的是一页数据的list,等到过期时间到了,自动删除。这种方案的问题是:实时性太差了!
(2)缓存的是一个一个的对象,当分页查询的时候,首先是查数据库,把数据的id查出来,然后根据id查缓存,如果查不到就再查数据库。这种方案的问题是:及时缓存里面有完整的一夜的数据,也会额外的查一次数据库。并且,如果缓存的数据被删除掉,会多次查询,才能构造出完整的一页数据,而直接查数据库的话,只需要一次查询!

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




------解决方案--------------------
貌似1适合 超大数据量的时候,但 应该是缓存前几页吧...
------解决方案--------------------
分页查询就别考虑实时性了吧。
查询页面加载完了,你加几条数据,数据的顺序不知道,总条数,总页数都变了。怎么处理?
感觉根据根据sql来缓存就可以
------解决方案--------------------
对缓存的更新应该在数据操作的时候控制。
假如用你的第2个方法,缓存的维护就不在查询端了。
但数据量大的话,放在内存中明显不合适,要是物理缓存,更新缓存又太费劲。
------解决方案--------------------
其实如果考虑时效性的话,又何必缓存数据呢?直接数据库分页查询就是了。如果需要时效性,那么在增加的时候就把对象增加到缓存当中,这样的问题就是,内存消耗会越来越大。反正任何方法都是有利有弊的,看个人更偏向于哪方面而定
------解决方案--------------------
首先,我想问楼主为什么要做缓存?你的分页查询的是性能瓶颈吗?
在数据量不是很大的情况下,分页查询应该不是性能瓶颈
在数据量比较大的情况下,查询条件的不同,返回的结果差异很大,做缓存也起不到多少作用,反而有点画蛇添足。