91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在springboot中使用EHcache 如何實現文章瀏覽量的更新與緩存

發布時間:2020-11-18 15:26:31 來源:億速云 閱讀:284 作者:Leah 欄目:編程語言

在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依賴

<dependency>
  <groupId>net.sf.ehcache</groupId>
  <artifactId>ehcache-core</artifactId>
  <version>2.6.11</version>
</dependency>

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

在application.yml中指定:

spring: 
 cache:
  jcache:
   config: classpath:ehcache.xml

最后在啟動類標注@EnableCaching

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

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

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

表示保存當日點擊量的

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

 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&#63;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.在查看文章方法中進行調用。

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

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

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

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宣恩县| 宣城市| 阿克苏市| 丰都县| 祁连县| 江孜县| 久治县| 南召县| 新巴尔虎左旗| 鄯善县| 永州市| 木兰县| 安新县| 从化市| 北川| 海安县| 锦屏县| 昆山市| 湘潭县| 陇南市| 新乐市| 太和县| 广饶县| 陆川县| 晴隆县| 东莞市| 日土县| 忻城县| 淅川县| 启东市| 齐齐哈尔市| 邵武市| 洮南市| 宜春市| 静乐县| 子长县| 罗源县| 丘北县| 建阳市| 青海省| 巢湖市|