ehcache显示文章阅读次数相关思考
来源:互联网 发布:网络电视无信号 编辑:程序博客网 时间:2024/05/16 11:17
我们做接口,应用,网页时常常会需要显示某篇文章的阅读次数(假设现在文章叫做article,阅读次数为readCount的属性,setter,getter器ok不谈)。
最常用的是直接获取返回给前台。article.getReadCount() 这样就好了。如果是点击了文章,当然是在点击的接口里面顺便更新下实体咯,article.setReadCount(article.getReadCount()+1) ,XXservice.update(entity)下ok。
那么问题就来了。如果这个网站是个日访问量不足5的渣渣,这个方法简单方便。但是,假如访问量比较大了一点呢?set后的update下还行么?不行!我拒绝。这样是否考虑过数据库的承受能力呢?一直在不停的写。。。恐怕不太好。
那么解决方法就是ehcache。ehcache框架的配置见我上一篇文章。下面讲讲思路与具体实现与代码。
思路:通过ehcache将访问量的数据存在cache(缓存)中,规定一个请求的访问更新数据库的间隔时间,当请求时间间隔超过时更新。
实现:
1,在实体类中先定义下缓存名和间隔时间。
2,ehcache.xml里面配置相同的缓存名
<cachename="growthDiaryHits"maxElementsInMemory="500"eternal="true"overflowToDisk="true"/>
3,service具体实现:
3.1:通过缓存名获取缓存,查找出对应每一篇文章的元素。定义阅读数变量count为0;
3.2:缓存元素存在,则设置count为缓存中的值;不存在则是数据库中值;
3.3:放入缓存;
3.4:判断时间来更新表;
4,接口,控制器等等调用service方法。
代码:(我觉得还是截图好,看着文章就证明这个没用过或者不熟悉,还是敲一遍学的快;截图省时间)
实体类中:
配置文件中(ehcache.xml):
service中:
接口中:
上面讲的是写,既然是存在缓存中的,那么读的时候从数据库中拿出来的阅读量肯定不是实时的了,代码如下:
// growthDiaryListBlock.setReadCount(growthDiary.getReadCount());
// 修改获得阅读量的获取,通过ehcache判断,存在从ehcache获取,不存在从表获取
Element element = cache.get(growthDiary.getId() + "_count");
if (element != null)
{
growthDiaryListBlock.setReadCount((Integer) element.getValue());
}
else
{
growthDiaryListBlock.setReadCount(growthDiary.getReadCount());
}
- ehcache显示文章阅读次数相关思考
- 在静态页面中显示文章被阅读的次数
- 在静态页面中显示文章被阅读的次数
- 作者文章阅读次数:2131
- 作者文章阅读次数:4295
- 作者文章阅读次数:3742
- wordpress实现文章阅读次数
- mybatis更新文章阅读次数
- 阅读相关文章
- ASP:在静态页面中显示文章被阅读的次数
- 微信公众账号要变:显示文章阅读次数 设点赞按钮
- drupal文章里添加阅读次数
- 免插件实现WordPress文章阅读次数
- 显示文章相关链接
- 阅读某管理文章的一些思考
- 不用插件 WordPress 显示文章浏览次数
- 自动检测CSDN博客文章阅读次数的爬虫
- Hexo+Next主题 文章添加阅读次数,访问量等
- android DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹的解决办法 .
- 限定EditText只能输入两位小数的两种方式
- 基于js的前端开发框架对比
- 七:重建二叉树(根据先序遍历(或者后序遍历)和中序遍历重建二叉树)
- 树的定义及术语
- ehcache显示文章阅读次数相关思考
- 论文提要“Delving Deep into Rectifiers”
- Android多线程编程小结
- 禁止ScrollView在子控件的布局改变时自动滚动的的方法
- 我是如何惩罚骗子的
- Android GridView添加Header和Footer组件
- UVa 11475 - Extend to Palindrome
- LayoutInflater 加载布局文件失败原因
- 【MFC-4】LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏