国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

服務(wù)器之家 - 編程語言 - Java教程 - springboot+EHcache 實(shí)現(xiàn)文章瀏覽量的緩存和超時(shí)更新

springboot+EHcache 實(shí)現(xiàn)文章瀏覽量的緩存和超時(shí)更新

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

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

問題描述

當(dāng)我們需要統(tǒng)計(jì)文章的瀏覽量的時(shí)候,最常規(guī)的做法就是:

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

2.在控制層獲取Article實(shí)體

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

4.最后update實(shí)體Article。

這么做對(duì)沒有訪問量的網(wǎng)站來說很棒,如果網(wǎng)站訪問量很大,這么不停的讀寫數(shù)據(jù)庫(kù),會(huì)對(duì)服務(wù)器造成很大的壓力。

解決思路

引入Ehcache,將文章的訪問量存在cache中,每點(diǎn)擊一次文章,將cache中的count加1.在有效的時(shí)間內(nèi)訪問文章只是將cache中的數(shù)據(jù)+1,超過指定時(shí)間則進(jìn)行一次數(shù)據(jù)庫(kù)更新。

解決方案

本文是在springboot整合ehcache的環(huán)境下驗(yàn)證的。springboot版本1.5.2 。ehcache版本2.6.11。springboot整合ehcache的步驟很簡(jiǎn)單,下面簡(jiǎn)單提一下,在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

最后在啟動(dòng)類標(biāo)注@EnableCaching

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

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

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

表示保存當(dāng)日點(diǎn)擊量的

在controller層定義緩存點(diǎn)擊量的方法

?
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.在查看文章方法中進(jìn)行調(diào)用。

?
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 實(shí)現(xiàn)文章瀏覽量的緩存和超時(shí)更新,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 都市激情在线视频 | 欧美一区二区三区在线 | 午夜999| 在线观看91视频 | 成人片网址 | 欧美视频一二三区 | 欧美精品一二三区 | 免费看一区二区三区 | 日韩一区二区在线观看 | 欧美一区 | 国产99在线| 国产午夜精品久久久久久久 | 亚洲欧美高清 | 91精品在线播放 | 久久草在线视频 | 成人亚洲 | 国产欧美视频一区二区 | 国产亚洲精品久久久久动 | 超碰一区二区三区 | 日本在线免费观看 | 成人超碰| 人成网址| 欧美精品在线观看 | 日韩精品视频在线播放 | aaa综合国产| www.久久久| 日本不卡高字幕在线2019 | 日本在线观看一区二区 | 精品视频在线一区 | 精品国产精品三级精品av网址 | 福利一区二区 | 高清成人 | 亚洲日本韩国在线观看 | 国产一区二区在线看 | 亚洲一区观看 | 最近免费中文字幕在线视频2 | 日韩欧美在线视频 | 国产高清精品在线 | 久久精品91 | 国产一区久久久 | 龙珠z普通话国语版在线观看 |