如何有效的更新ehcache缓存里实时性要求很高的数据?

紫电清霜 发布于 2013/05/09 10:18
阅读 7K+
收藏 1
关于ehcache缓存的使用,我有个问题:

有些实时性要求很高常常变动的数据,像是一篇文章(Article)的浏览次数(pv),每查看该文章一次,pv数就+1,但是缓存里的数据是每隔半小时,或者一小时才更新一次,这样会造成:pv数不能实时真实的展示出来。

要做到实时展示,只能在被浏览之后更新该Article在缓存里的pv数。

但问题是:缓存里放了ArticlePage(Article分页取出的数据,用于“文章列表”的展示),和Article(单个Article,用于浏览查看该文章详情),更新缓存的时候同时得更新该Article里的pv和ArticlePage里此Article的pv(在从ArticlePage里查找该Article的时候建立一个map<Integer, Acticle>,方便找到,但是,感觉增加了不少复杂度)。

不知道大家是怎么处理这类——“更新ehcache缓存里实时性要求很高的数据”问题的?

有没有简洁,高效点的思路呢?

谢谢了:)

加载中
1
UlricQin
UlricQin
ArticlePage里不要存放Article,仅仅存放Article的ID即可
紫电清霜
紫电清霜
再来看看这个问题.
紫电清霜
紫电清霜
这思路太好了,我咋没想到,哈哈!谢谢大侠指导!!!
1
gtd
gtd

记得 @红薯 提过这种方法(但我刚才没找到),即:查询Page或者list时候只查询ID的list,再用ID list从缓存和库中加载成完整对象(如果所有id对应的缓存都有,则不用查询数据库,如果没有,则用 id in的方式多查询一次)。

就是说不缓存ArticlePage, 只通过id缓存Article, 这样可能增加一次SQL查询,也增加了一些数据处理复杂度,但更新时只需要更新缓存中的Article对象。


0
闲大赋
闲大赋
这样处理挺好的,就是那么复杂的
0
shuaia
shuaia
用户为什么点文章连接?重点不是浏览次数而是Article里的内容。所以同意@闲.大赋 的说法。如果真要做得那么实施的话何不换一种做法?比如memcached或者redis之类的有原子加减的东西。
0
紫电清霜
紫电清霜

谢谢所有回答的朋友,

@iPerl  @gtd  你们的思路太棒了,就是这样搞会方便很多!

返回顶部
顶部