一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - springboot+EHcache 實現文章瀏覽量的緩存和超時更新

springboot+EHcache 實現文章瀏覽量的緩存和超時更新

2020-09-20 14:19吃米不就菜 Java教程

這篇文章主要介紹了springboot+EHcache 實現文章瀏覽量的緩存和超時更新,問題描述和解決思路給大家介紹的非常詳細,需要的朋友可以參考下

問題描述

當我們需要統計文章的瀏覽量的時候,最常規的做法就是:

1.訪問文章鏈接www.abc.com/article/{id}

2.在控制層獲取Article實體

3.得到文章瀏覽量count并且count++

4.最后update實體Article。

這么做對沒有訪問量的網站來說很棒,如果網站訪問量很大,這么不停的讀寫數據庫,會對服務器造成很大的壓力。

解決思路

引入Ehcache,將文章的訪問量存在cache中,每點擊一次文章,將cache中的count加1.在有效的時間內訪問文章只是將cache中的數據+1,超過指定時間則進行一次數據庫更新。

解決方案

本文是在springboot整合ehcache的環境下驗證的。springboot版本1.5.2 。ehcache版本2.6.11。springboot整合ehcache的步驟很簡單,下面簡單提一下,在pom文件中引入ehcache依賴

?
1
2
3
4
5
<dependency>
  <groupId>net.sf.ehcache</groupId>
  <artifactId>ehcache-core</artifactId>
  <version>2.6.11</version>
</dependency>

在類路徑下存放ehcache.xml文件。

在application.yml中指定:

?
1
2
3
4
spring:
 cache:
  jcache:
   config: classpath:ehcache.xml

最后在啟動類標注@EnableCaching

引入緩存之后,接著我們的正題

在ehcache.xml文件中定義dayHits緩存

?
1
2
<cache name="dayHits" maxEntriesLocalHeap="500" eternal="true" overflowToDisk="true">
</cache>

表示保存當日點擊量的

在controller層定義緩存點擊量的方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public Integer cacheCount(Long articleId){
   Content content = contentRepository.findOne(articleId);
   Ehcache cache = cacheManager.getEhcache("dayHits");
   Element element = cache.get(articleId+"_count");
   Integer count = 0;
   if(element!=null){
     count = (Integer) element.getValue();
   }else{
     count = content.getHits()== null?0:content.getHits();
   }
   count++;
   cache.put(new Element(articleId+"_count",count));
   cache.put(new Element(articleId+"_dayHitsDate",SystemUtils.getNowDate()));
   Long time = System.currentTimeMillis();
   if(time > (viewArticleTime+ 300000)){
     viewArticleTime = time;
     content.setHits(count);
     contentRepository.save(content);
     cache.removeAll();
   }
   return count;
 }

3.在查看文章方法中進行調用。

?
1
2
3
4
@RequestMapping(value = "article/{id}",method = RequestMethod. GET)
 public String detail(@PathVariable Long id,ModelMap map){
 Integer hits = cacheCount(id);
 }

4.其中局部變量的定義:

?
1
2
private static CacheManager cacheManager = CacheManager.newInstance();
 private static Long viewArticleTime = System.currentTimeMillis();

5.保存訪問看看效果吧。

以上所述是小編給大家介紹的springboot+EHcache 實現文章瀏覽量的緩存和超時更新,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://blog.csdn.net/qq_19408473/article/details/70850420

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲黄色天堂 | 成年人视频在线播放 | 亚洲日日做天天做日日谢 | 日本动漫黄网站在线观看 | 24adc年龄18岁欢迎大驾光临 | 亚洲视频在线看 | 亚洲va久久久久 | 草草在线视频 | 国产喂奶300部| 九九九九九热 | 亚洲精品久久久WWW游戏好玩 | 五月天国产视频 | 91精品综合 | 美国69xxxx59 | 果冻传媒和91制片厂网站软件 | 日韩欧美一区二区在线观看 | 涩情主播在线翻车 | 久久婷婷五月免费综合色啪 | 91网红福利精品区一区二 | 丁香六月婷婷激情 | 欧洲美女人牲交一级毛片 | 色综合久久中文字幕综合网 | 国产一区在线 | 亚洲国产成人综合 | 国产一区二区三区水野朝阳 | 男人插曲女人下面 | 91香蕉国产 | 欧美同性video | 亚洲天堂岛国片 | 拍拍叫痛的无挡视频免费 | 日韩在线毛片 | 人人人人人看碰人人免费 | 99热这里只有精品国产在热久久 | 奇米影视888四色首页 | 2019亚洲男人天堂 | 草莓茄子丝瓜番茄小蝌蚪 | 99久久中文字幕伊人 | 国产精品探花一区在线观看 | gay18高中生白袜xnxx动漫 | 美女脱了内裤打开腿让人桶网站o | 成人网18免费网 |