首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

基于hibernate二级缓存的论坛缓存草案

2012-10-24 
基于hibernate二级缓存的论坛缓存方案前言hibernate查询缓存很难用,更新某个实体后会导致与此实体相关的所

基于hibernate二级缓存的论坛缓存方案
前言
hibernate查询缓存很难用,更新某个实体后会导致与此实体相关的所有查询缓存失效,很不爽;
此方案建立在hibernate二级缓存的基础上
目的
缓存帖子的每一页(即回帖)
何时写缓存?何时清理缓存?
读取帖子第N页是缓存之,有回帖 修改回帖 删除回帖时清理缓存
缓存结构

//构造一个Page对象private Page<ThreadPost> buildPage(int pageNo, int pageSize, Integer postNum, String postIdString){if(StringUtils.isBlank(postIdString)){return Page.EMPTY_PAGE;}List<ThreadPost> list = new ArrayList<ThreadPost>(postIdString.length());for(String postId : postIdString.split("#")){//[color=red]从hibernate二级缓存中读取[/color]list.add(threadPostManager.get(Integer.valueOf(postId)));}return new Page<ThreadPost>(pageNo, postNum, pageSize, list);}
1 楼 dizdev 2009-09-09   great!

我觉得是个非常适中的解决办法。

您的策率似乎是 当有新回帖的时候发一次SQL并更新缓存。 但是我思考中,论坛的高频率回复会否导致缓存刷新太频繁而失去意义。转而言之,虽然分页大大缓解SQL压力,但是频繁的访问同样迫切的要求有缓存存在。

因此牺牲一点点实时效率换取运行效率的方案比较Fit成本 2 楼 qchong 2009-09-22   注意线程同步。。。 3 楼 xly_971223 2009-09-22   qchong 写道注意线程同步。。。
说的极是 4 楼 dingyuan 2009-09-22   hibernate的查询缓存缓存的是查询列表的id,只有在删除和插入操作时才会失效,更新操作只会更新对象缓存,查询缓存是不会失效的 5 楼 maike 2009-10-15   dingyuan 写道hibernate的查询缓存缓存的是查询列表的id,只有在删除和插入操作时才会失效,更新操作只会更新对象缓存,查询缓存是不会失效的

想问下,更新某一个对象后是更新缓存中的所有对象还是只更新缓存中的这个对象? 谢谢! 6 楼 yzzh9 2009-12-02   很好的方法,可以直接用到二级缓存。

热点排行