国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

suosuopuo / 2074人閱讀

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

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

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

新建一個maven項目

在maven項目的pom.xml文件中添加對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">      
   
        
   
        
   
                 
          
                

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

path :指定磁盤存儲的位置

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

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

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

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

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

編輯代碼測試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)建一個緩存實例(在配置文件中獲取一個緩存實例)  
        final Cache cache = cacheManager.getCache("helloworld1");  
        
        final String key = "greeting";  
        final String key1 = "greeting1";
        //創(chuàng)建一個數(shù)據(jù)容器來存放我們所創(chuàng)建的element  
        final Element putGreeting = new Element(key, "Hello, World!");  
        final Element putGreeting1 = new Element(key1, "Hello Ehcache");
        
        //將數(shù)據(jù)放入到緩存實例中  
        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é)果驗證,如果后臺輸出如下字段即在指定的cache存放文件夾找到創(chuàng)建的cache就說明我們打開了學(xué)習(xí)EhCache大門。

后臺輸出: value======//========Hello, World!

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

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

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/68077.html

相關(guān)文章

  • Mybatis【逆向工程,緩存,代理】知識要點

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

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

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

    chenjiang3 評論0 收藏0
  • Java 程序員必備 15 個框架,前 3 個地位無可動搖!

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

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

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

    idealcn 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<