成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java緩存框架---EhCache(基于Maven+Spring的EhCache入門教程)

suosuopuo / 2079人閱讀

摘要:今天就介紹一款常用的緩存框架。設(shè)置緩存中對(duì)象是否為永久的,如果是,超時(shí)設(shè)置將被忽略,對(duì)象從不過期。內(nèi)存不足時(shí),是否啟用磁盤緩存。磁盤失效線程運(yùn)行時(shí)間間隔,默認(rèn)是秒。

在當(dāng)今大數(shù)據(jù)爆發(fā)時(shí)代,數(shù)據(jù)量每天都呈“爆炸式”增長,頻繁的數(shù)據(jù)庫訪問無疑給數(shù)據(jù)庫帶來的極大負(fù)載,除了增大物理服務(wù)器的數(shù)量,我們也可以將一些常用的、公共的資源以cache形式放在客戶端或者靠近客戶端的服務(wù)器上,從而減少了服務(wù)器的負(fù)載,進(jìn)一步也改善了系統(tǒng)的整體性能。今天就介紹一款常用的緩存框架---EhCache。

什么是EhCache?
ehcache是現(xiàn)在最流行的純java開源框架,配置簡(jiǎn)單,結(jié)構(gòu)清晰,功能強(qiáng)大,最初知道它,是從hibernate的緩存開始的。網(wǎng)上中文的ehcache材料以簡(jiǎn)單的介紹和配置方法居多,如果你有這方面的問題,請(qǐng)自行看官網(wǎng)api文檔,但是很少見到特性說明和對(duì)實(shí)現(xiàn)原理的分析,因此在這這篇文章里面,我會(huì)詳細(xì)介紹和分析ehcache的特性,加上一些自己的理解和思考,希望對(duì)緩存感興趣的朋友有所收獲。
EhCache入門教程

新建一個(gè)maven項(xiàng)目

在maven項(xiàng)目的pom.xml文件中添加對(duì)EhCache及Spring的依賴,如下所示:

 
 4.0.0    
 com.imooc
 Ehcache
 0.0.1-SNAPSHOT
 jar   
 Ehcache
 http://maven.apache.org  
 
  UTF-8
   4.10
   4.2.3.RELEASE
 
 
     
     
       net.sf.ehcache
       ehcache
       2.10.2
   
   
     junit
     junit
     ${junit.version}
     test
   

   
        org.springframework
        spring-test
        ${spring.version}
        test
    


   
   
       org.springframework
       spring-webmvc
       ${spring.version}
   
   
       org.springframework
       spring-core
       ${spring.version}
   
   
       org.springframework
       spring-context
       ${spring.version}
   
   
       org.springframework
       spring-context-support
       ${spring.version}
   
 
 
   
       aliyun
       aliyun
       http://maven.aliyun.com/nexus/content/groups/public
   
 

在src/main/resources目錄下創(chuàng)建ehcache的配置文件ehcache.xml,如下:

   

        xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">      
   
        
   
        
   
                 
          
                

針對(duì)ehcache的配置文件的參數(shù)進(jìn)行詳細(xì)說明:
diskStore : ehcache支持內(nèi)存和磁盤兩種存儲(chǔ)

path :指定磁盤存儲(chǔ)的位置

默認(rèn)cache參數(shù)配置說明:
defaultCache : 默認(rèn)的緩存

* maxEntriesLocalHeap=”10000”
    * eternal=”false”
    * timeToIdleSeconds=”120”
    * timeToLiveSeconds=”120”
    * maxEntriesLocalDisk=”10000000”
    * diskExpiryThreadIntervalSeconds=”120”
    * memoryStoreEvictionPolicy=”LRU”

cache :自定的緩存,當(dāng)自定的配置不滿足實(shí)際情況時(shí)可以通過自定義(可以包含多個(gè)cache節(jié)點(diǎn))

* name : 緩存的名稱,可以通過指定名稱獲取指定的某個(gè)Cache對(duì)象
* maxElementsInMemory :內(nèi)存中允許存儲(chǔ)的最大的元素個(gè)數(shù),0代表無限個(gè)
* clearOnFlush:內(nèi)存數(shù)量最大時(shí)是否清除。
* eternal :設(shè)置緩存中對(duì)象是否為永久的,如果是,超時(shí)設(shè)置將被忽略,對(duì)象從不過期。根據(jù)存儲(chǔ)數(shù)據(jù)的不同,例如一些靜態(tài)不變的數(shù)據(jù)如省市區(qū)等可以設(shè)置為永不過時(shí)
* timeToIdleSeconds : 設(shè)置對(duì)象在失效前的允許閑置時(shí)間(單位:秒)。僅當(dāng)eternal=false對(duì)象不是永久有效時(shí)使用,可選屬性,默認(rèn)值是0,也就是可閑置時(shí)間無窮大。
* timeToLiveSeconds :緩存數(shù)據(jù)的生存時(shí)間(TTL),也就是一個(gè)元素從構(gòu)建到消亡的最大時(shí)間間隔值,這只能在元素不是永久駐留時(shí)有效,如果該值是0就意味著元素可以停頓無窮長的時(shí)間。
* overflowToDisk :內(nèi)存不足時(shí),是否啟用磁盤緩存。
* maxEntriesLocalDisk:當(dāng)內(nèi)存中對(duì)象數(shù)量達(dá)到maxElementsInMemory時(shí),Ehcache將會(huì)對(duì)象寫到磁盤中。
* maxElementsOnDisk:硬盤最大緩存?zhèn)€數(shù)。
* diskSpoolBufferSizeMB:這個(gè)參數(shù)設(shè)置DiskStore(磁盤緩存)的緩存區(qū)大小。默認(rèn)是30MB。每個(gè)Cache都應(yīng)該有自己的一個(gè)緩沖區(qū)。
* diskPersistent:是否在VM重啟時(shí)存儲(chǔ)硬盤的緩存數(shù)據(jù)。默認(rèn)值是false。
* diskExpiryThreadIntervalSeconds:磁盤失效線程運(yùn)行時(shí)間間隔,默認(rèn)是120秒。

ehcache緩存的3種清空策略:
1 FIFO,先進(jìn)先出
2 LFU,最少被使用,緩存的元素有一個(gè)hit屬性,hit值最小的將會(huì)被清出緩存。
3 LRU,最近最少使用的,緩存的元素有一個(gè)時(shí)間戳,當(dāng)緩存容量滿了,而又需要騰出地方來緩存新的元素的時(shí)候,那么現(xiàn)有緩存元素中時(shí)間戳離當(dāng)前時(shí)間最遠(yuǎn)的元素將被清出緩存。

編輯代碼測(cè)試Ehcache

package com.imooc.Ehcache;

import java.io.InputStream;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
/**

* 通過配置文件(ehcache.xml)來使用緩存 
* @author Administrator 

 */  
public class EhCache2 {        
    public static void main(String[] args) {  
         //通過讀取ehcache配置文件來創(chuàng)建緩存管理器即CacheManager  
        InputStream in = EhCache2.class.getClassLoader().getResourceAsStream("ehcache1.xml");
        CacheManager cacheManager = CacheManager.create(in);  
  
        // 創(chuàng)建一個(gè)緩存實(shí)例(在配置文件中獲取一個(gè)緩存實(shí)例)  
        final Cache cache = cacheManager.getCache("helloworld1");  
        
        final String key = "greeting";  
        final String key1 = "greeting1";
        //創(chuàng)建一個(gè)數(shù)據(jù)容器來存放我們所創(chuàng)建的element  
        final Element putGreeting = new Element(key, "Hello, World!");  
        final Element putGreeting1 = new Element(key1, "Hello Ehcache");
        
        //將數(shù)據(jù)放入到緩存實(shí)例中  
        cache.put(putGreeting);  
        cache.put(putGreeting1);
        
        //取值  
        final Cache cache2 = cacheManager.getCache("helloworld1");  
        final Element getGreeting = cache2.get(key); 
        final Element getGreeting1 = cache2.get(key1);
  
        // Print the value  
        System.out.println("value======//========"+getGreeting.getObjectValue());  
        System.out.println("value1=====//========"+getGreeting1.getObjectKey());
    }       
}  

結(jié)果驗(yàn)證,如果后臺(tái)輸出如下字段即在指定的cache存放文件夾找到創(chuàng)建的cache就說明我們打開了學(xué)習(xí)EhCache大門。

后臺(tái)輸出: value======//========Hello, World!

          value1=====//========greeting1

最后附上本次實(shí)例的源碼:
鏈接:https://pan.baidu.com/s/1nu6rrz7 密碼:p5vw
Ehcache官方文檔下載鏈接:鏈接:https://pan.baidu.com/s/1cyg3Tk 密碼:0zf0

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68077.html

相關(guān)文章

  • Mybatis【逆向工程,緩存,代理】知識(shí)要點(diǎn)

    摘要:一級(jí)緩存值得注意的地方默認(rèn)就是支持一級(jí)緩存的,并不需要我們配置和整合后進(jìn)行代理開發(fā),不支持一級(jí)緩存,和整合,按照的模板去生成代理對(duì)象,模板中在最后統(tǒng)一關(guān)閉??偨Y(jié)的一級(jí)緩存是級(jí)別的。 前言 本文主要講解Mybatis的以下知識(shí)點(diǎn): Mybatis緩存 一級(jí)緩存 二級(jí)緩存 與Ehcache整合 Mapper代理 使用Mapper代理就不用寫實(shí)現(xiàn)類了 逆向工程 自動(dòng)生成代碼 ...

    wanglu1209 評(píng)論0 收藏0
  • SpringCloud(第 045 篇)鏈接Mysql數(shù)據(jù)庫集成Mybatis、ehcache采用M

    摘要:添加用戶接口類簡(jiǎn)單用戶鏈接數(shù)據(jù)庫微服務(wù)通過注解標(biāo)注該類為持久化操作對(duì)象。查找用戶數(shù)據(jù)保存用戶數(shù)據(jù)更新用戶數(shù)據(jù)刪除用戶數(shù)據(jù)這是清除緩存添加緩存配置緩存配置。對(duì)象是否永久有效,一但設(shè)置了,將不起作用。設(shè)置對(duì)象在失效前允許存活時(shí)間單位秒。 SpringCloud(第 045 篇)鏈接Mysql數(shù)據(jù)庫簡(jiǎn)單的集成Mybatis、ehcache框架采用MapperXml訪問數(shù)據(jù)庫 - 一、大致介紹...

    chenjiang3 評(píng)論0 收藏0
  • Java 程序員必備 15 個(gè)框架,前 3 個(gè)地位無可動(dòng)搖!

    摘要:官網(wǎng)源碼推薦從開始手寫一個(gè)框架更多請(qǐng)?jiān)诩夹g(shù)棧微信公眾號(hào)后臺(tái)回復(fù)關(guān)鍵字。是一個(gè)開放源代碼的對(duì)象關(guān)系映射框架,它對(duì)進(jìn)行了非常輕量級(jí)的對(duì)象封裝,它將與數(shù)據(jù)庫表建立映射關(guān)系,是一個(gè)全自動(dòng)的框架。 Java 程序員方向太多,且不說移動(dòng)開發(fā)、大數(shù)據(jù)、區(qū)塊鏈、人工智能這些,大部分 Java 程序員都是 Java Web/后端開發(fā)。那作為一名 Java Web 開發(fā)程序員必須需要熟悉哪些框架呢? 今天...

    galaxy_robot 評(píng)論0 收藏0
  • SpringBoot 實(shí)戰(zhàn) (十一) | 整合數(shù)據(jù)緩存 Cache

    摘要:前言如題,今天介紹的數(shù)據(jù)緩存。說明確實(shí)做了數(shù)據(jù)緩存,第二次的測(cè)試結(jié)果是從數(shù)據(jù)緩存中獲取的,并沒有直接查數(shù)據(jù)庫。為為的數(shù)據(jù)做了緩存插入數(shù)據(jù)返回的結(jié)果數(shù)據(jù)庫中的結(jié)果訪問結(jié)果如下圖。后語以上為數(shù)據(jù)緩存的教程。 微信公眾號(hào):一個(gè)優(yōu)秀的廢人如有問題或建議,請(qǐng)后臺(tái)留言,我會(huì)盡力解決你的問題。 前言 如題,今天介紹 SpringBoot 的數(shù)據(jù)緩存。做過開發(fā)的都知道程序的瓶頸在于數(shù)據(jù)庫,我們也知道內(nèi)...

    idealcn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<