【小結(jié)】ehcache緩存

常見(jiàn)的緩存技術(shù)

  • ehcache:hibernate底層

  • memcache:

  • redis:常用

  • jar包:


    360截圖20190722191024047.jpg
  • ehcache使用步驟:
    1.導(dǎo)入jar包
    2.編寫(xiě)配置文件
    3.使用api
    獲取數(shù)據(jù)先從緩存中獲取
    若獲取的值為空
    再去查詢數(shù)據(jù)庫(kù),
    將數(shù)據(jù)放入緩存中

    public List<Category> findAll() throws Exception {
    //1.創(chuàng)建緩存管理器

      CacheManager cm=CacheManager.create(CategoryServiceImpl.class.getClassLoader().getResourceAsStream("ehcache.xml"));
      
      //2.獲取指定的緩存
      Cache cache = cm.getCache("categoryCache");
      
      //3.通過(guò)緩存獲取數(shù)據(jù)  將cache看成一個(gè)map即可
      Element element = cache.get("clist");
      
      List<Category> list=null;
      
      //4.判斷數(shù)據(jù)
      if(element==null){
          //從數(shù)據(jù)庫(kù)中獲取
          CategoryDao cd=(CategoryDao) BeanFactory.getBean("CategoryDao");
          list=cd.findAll();
          
          //將list放入緩存
          cache.put(new Element("clist", list));
          
          System.out.println("緩存中沒(méi)有數(shù)據(jù),已去數(shù)據(jù)庫(kù)中獲取");
      }else{
          //直接返回
          list=(List<Category>) element.getObjectValue();
          
          System.out.println("緩存中有數(shù)據(jù)");
      }
      
      return list;
    

    }

xml配置文件內(nèi)容以及注釋如下:

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">

<diskStore path="C:/ehcache"/>

<cache
        name="categoryCache"
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        maxElementsOnDisk="10000000"
        diskPersistent="false"
        diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU"
        />
        
<!--
    默認(rèn)緩存配置,
    以下屬性是必須的:
        name :cache的標(biāo)識(shí)符,在一個(gè)CacheManager中必須唯一。
        maxElementsInMemory : 在內(nèi)存中緩存的element的最大數(shù)目。
        maxElementsOnDisk : 在磁盤(pán)上緩存的element的最大數(shù)目。
        eternal : 設(shè)定緩存的elements是否有有效期。如果為true,timeouts屬性被忽略。
        overflowToDisk : 設(shè)定當(dāng)內(nèi)存緩存溢出的時(shí)候是否將過(guò)期的element緩存到磁盤(pán)上。

    以下屬性是可選的:
         timeToIdleSeconds : 緩存element在過(guò)期前的空閑時(shí)間。
         timeToLiveSeconds : 緩存element的有效生命期。
         diskPersistent : 在VM重啟的時(shí)候是否持久化磁盤(pán)緩存,默認(rèn)是false。
         diskExpiryThreadIntervalSeconds : 磁盤(pán)緩存的清理線程運(yùn)行間隔,默認(rèn)是120秒.
         memoryStoreEvictionPolicy : 當(dāng)內(nèi)存緩存達(dá)到最大,有新的element加入的時(shí)候,
            移除緩存中element的策略。默認(rèn)是LRU,可選的有LFU和FIFO

-->
</ehcache>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、簡(jiǎn)介 Ehcache是一個(gè)用Java實(shí)現(xiàn)的使用簡(jiǎn)單,高速,實(shí)現(xiàn)線程安全的緩存管理類庫(kù),ehcache提供了用內(nèi)...
    小程故事多閱讀 44,491評(píng)論 9 59
  • 1.簡(jiǎn)介*Ehcache在很多項(xiàng)目中都出現(xiàn)過(guò),用法也比較簡(jiǎn)單。一般的加些配置就可以了,而且Ehcache可以對(duì)頁(yè)面...
    傀儡師77閱讀 1,276評(píng)論 0 0
  • Spring整合Ehcache管理緩存 前言 Ehcache 是一個(gè)成熟的緩存框架,你可以直接使用它來(lái)管理你的緩存...
    人在碼途閱讀 1,322評(píng)論 0 1
  • 前言 Ehcache 是一個(gè)成熟的緩存框架,你可以直接使用它來(lái)管理你的緩存。Spring 提供了對(duì)緩存功能的抽象:...
    靜默虛空閱讀 2,570評(píng)論 3 20
  • 理論總結(jié) 它要解決什么樣的問(wèn)題? 數(shù)據(jù)的訪問(wèn)、存取、計(jì)算太慢、太不穩(wěn)定、太消耗資源,同時(shí),這樣的操作存在重復(fù)性。因...
    jiangmo閱讀 3,139評(píng)論 0 11

友情鏈接更多精彩內(nèi)容