最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年04月27日 15:06:51   作者:吃米不就菜  
這篇文章主要介紹了springboot+EHcache 實現(xiàn)文章瀏覽量的緩存和超時更新,問題描述和解決思路給大家介紹的非常詳細,需要的朋友可以參考下

問題描述

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

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

2.在控制層獲取Article實體

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

4.最后update實體Article。

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

解決思路

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

解決方案

本文是在springboot整合ehcache的環(huán)境下驗證的。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?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.在查看文章方法中進行調(diào)用。

 @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();

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

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

相關文章

  • SWT(JFace)體驗之打開多個Form

    SWT(JFace)體驗之打開多個Form

    SWT(JFace)體驗之打開多個Form的實現(xiàn)代碼。
    2009-06-06
  • Springboot集成knife4j實現(xiàn)風格化API文檔

    Springboot集成knife4j實現(xiàn)風格化API文檔

    這篇文章主要介紹了Springboot如何集成knife4j實現(xiàn)風格化API文檔,幫助大家更好的使用springboot框架,感興趣的朋友可以了解下
    2020-12-12
  • Java中性能優(yōu)化的35種方法匯總

    Java中性能優(yōu)化的35種方法匯總

    很多同學在日常寫Java的時候很少去關心性能問題,但是在我們寫代碼的過程中必須考慮到性能對程序的影響。小到我們使用位運算來實現(xiàn)算術運算,大到我們對 Java 代碼的總體架構(gòu)設計,性能其實離我們很近。本文介紹了Java中性能優(yōu)化的35種方法,需要的朋友可以參考下。
    2017-01-01
  • Java 必知必會的 URL 和 URLConnection使用

    Java 必知必會的 URL 和 URLConnection使用

    這篇文章主要介紹了Java 必知必會的 URL 和 URLConnection使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • Java實現(xiàn)布隆過濾器的幾種方式總結(jié)

    Java實現(xiàn)布隆過濾器的幾種方式總結(jié)

    這篇文章給大家總結(jié)了幾種Java實現(xiàn)布隆過濾器的方式,手動硬編碼實現(xiàn),引入Guava實現(xiàn),引入hutool實現(xiàn),通過redis實現(xiàn)等幾種方式,文中有詳細的代碼和圖解,需要的朋友可以參考下
    2023-07-07
  • 基于@AliasFor注解的用法及說明

    基于@AliasFor注解的用法及說明

    這篇文章主要介紹了基于@AliasFor注解的用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • SpringSecurity6.x多種登錄方式配置小結(jié)

    SpringSecurity6.x多種登錄方式配置小結(jié)

    SpringSecurity6.x變了很多寫法,本文就來介紹一下SpringSecurity6.x多種登錄方式配置小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • Java多線程Future實現(xiàn)優(yōu)雅獲取線程的執(zhí)行結(jié)果

    Java多線程Future實現(xiàn)優(yōu)雅獲取線程的執(zhí)行結(jié)果

    這篇文章主要為大家詳細介紹了Java如何利用Future實現(xiàn)優(yōu)雅獲取線程的執(zhí)行結(jié)果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-07-07
  • @Scheduled定時器原理及@RefreshScope相互影響

    @Scheduled定時器原理及@RefreshScope相互影響

    這篇文章主要為大家介紹了@Scheduled定時器原理及@RefreshScope相互影響詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 5個Java API使用技巧

    5個Java API使用技巧

    這篇文章主要為大家詳細介紹了Java API安全和性能方面的簡單易用技巧,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評論

米泉市| 木兰县| 威海市| 洛南县| 侯马市| 鄂托克旗| 北流市| 蓬安县| 连平县| 镇坪县| 伊川县| 昌图县| 富蕴县| 衡阳县| 富阳市| 富阳市| 潜江市| 慈利县| 沂源县| 常熟市| 岳阳县| 汉源县| 元阳县| 射阳县| 桂阳县| 洛宁县| 临安市| 漠河县| 昔阳县| 根河市| 崇礼县| 桐城市| 如皋市| 娱乐| 曲松县| 米林县| 汶川县| 都昌县| 宜兰县| 华亭县| 福泉市|