锁定老帖子 主题:关于分页查询如何做缓存的问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-04-17
我说下我们下载的解决方案,
springMvc + ehcache 缓存是使用 注解做的,缓存的是一页的数据,缓存是有生命周期的, 到时间自动刷新,时间也好控制,使用方便,配置简单,是杀人,放火的必备良药 |
|
返回顶楼 | |
发表时间:2012-04-17
我也很想知道有没什么比较好的方案
|
|
返回顶楼 | |
发表时间:2012-04-17
goldenfish1919 写道 我能想到的有两种处理方式:
(1)缓存的是一页数据的list,等到过期时间到了,自动删除。这种方案的问题是:实时性太差了! (2)缓存的是一个一个的对象,当分页查询的时候,首先是查数据库,把数据的id查出来,然后根据id查缓存,如果查不到就再查数据库。这种方案的问题是:及时缓存里面有完整的一夜的数据,也会额外的查一次数据库。并且,如果缓存的数据被删除掉,会多次查询,才能构造出完整的一页数据,而直接查数据库的话,只需要一次查询! 这两种方式的弊端都很明显,大家是如何处理的呢? 根据楼主的表述,发现业务不需要考虑下面两种情况: (1)分页的大小改变问题 (2)分页数据的排序问题 那么剩下来就只有缓存数据量和更新频度的问题了。一般适合放到缓存的数据都是更新频度比较低的,否则就加重缓存的维护负担,增加复杂性,综合起来可能还不如不用缓存。看楼主的业务是分页数据,我猜想可能是类似排行榜之类的数据,或者是统计结算相关的结果数据。这类数据是很适合缓存的,如果楼主追求一个通用的可靠方案,可以考虑Redis来做缓存,List或Set数据类型都可以。 对于大数据量的分页数据,就需要按照实际情况来处理了,根据调查一般分页很多的数据,用户一般只会关注前面的十几页。所以,楼主可以把前n条数据缓存起来,其他的直接查数据库就可以了。 |
|
返回顶楼 | |
发表时间:2012-04-17
楼主, 分页都要做缓存, 那一定是出现这些数据存在复杂的业务逻辑, 或是N多表的关联查询, 数据挖取性能上存在问题。如果是这种场景, 建议从逻辑或数据库表结构上做调整, 不是很适合用缓存。
|
|
返回顶楼 | |