日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Ehcache介绍及整合Spring实现高速缓存

發布時間:2023/12/3 javascript 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ehcache介绍及整合Spring实现高速缓存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自?Ehcache介紹及整合Spring實現高速緩存


Ehcache介紹


EhCache?是一個純Java的進程內緩存框架,具有快速、精干等特點,是Hibernate中默認的CacheProvider。它使用的是JVM的堆內存,超過內存可以設置緩存到磁盤,企業版的可以使用JVM堆外的物理內存。


Spring整合Ehcache




首先加入最新的ehcache的maven依賴


<!-- ehcache -->

<dependency>

????????<groupId>net.sf.ehcache</groupId>

????????<artifactId>ehcache</artifactId>

????????<version>2.10.4</version>

</dependency>


在Spring配置文件中加入如下配置


<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">

????????<property name="configLocation" value="classpath:ehcache.xml" />

</bean>


<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">

????????<property name="cacheManager" ref="ehcache" />

</bean>

<cache:annotation-driven cache-manager="cacheManager" />


在classpath中加入ehcache的配置文件ehcache.xml


<?xml version="1.0" encoding="UTF-8"?>

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

? ? ? ? ?xsi:noNamespaceSchemaLocation="ehcache.xsd"

? ? ? ? ?updateCheck="false"?

? ? ? ? ?monitoring="autodetect"

? ? ? ? ?dynamicConfig="true"

? ? ? ? ?maxBytesLocalHeap="800M"

? ? ? ? ?maxBytesLocalDisk="200G">


????<diskStore path="./cache"/>


????<!-- 永不過期 -->

? ? <defaultCache?

? ?? ????eternal="true" ?

? ? ? ? ????overflowToDisk="true" ?

? ? ? ? ????diskPersistent="true" ?

? ? ? ? ????memoryStoreEvictionPolicy="LRU"?

? ?/>

? ? ? ??

? ?<!-- 緩存一天 -->

? ?<cache name="oneDayCache"?

? ?? ????eternal="false" ?

? ? ? ? ????timeToIdleSeconds="0"?

? ? ? ????? timeToLiveSeconds="86400"?

? ? ? ? ????overflowToDisk="true" ?

? ? ? ? ????diskPersistent="true" ?

? ? ? ????? diskExpiryThreadIntervalSeconds="1800"?

? ? ? ? ????memoryStoreEvictionPolicy="LRU"?

? ? />?

</ehcache>


配置文件說明


Spring Cache的Cacheable注解不支持失效時間設置,所以只能在ehcache.xml上面設計緩存。上面的配置文件配置了兩種緩存,一種永久不過期的,一種緩存1小時,更多時限的在后面加就行。


參數說明


updateCheck: 建議關閉ehcache的自動更新,不然每次啟動都要去官網更新

monitoring:自動檢測

dynamicConfig: 支持動態改變配置


maxBytesLocalHeap: 最大堆內存使用,單位可為K,M,G

maxBytesLocalDisk: 最大磁盤使用,單位可為K,M,G


maxBytesLocalHeap、maxBytesLocalDisk這兩個是定義在總配置上的,不過也可以指定到具體的緩存上面去,不過最大容量以總配置上面的大小為準。


diskStore:指定數據存儲位置,可指定磁盤中的文件夾位置

defaultCache: 默認的管理策略 ?


以下屬性是必須的


name: Cache的名稱,必須是唯一的,ehcache會把這個cache放到HashMap里去。


maxElementsInMemory:在內存中緩存的element的最大數目。

maxElementsOnDisk:在磁盤上緩存的element的最大數目,默認值為0,表示不限制。 ?

?

eternal:設定緩存的elements是否永遠不過期。如果為true,則緩存的數據始終有效,如果為false那么還要根據timeToIdleSeconds,timeToLiveSeconds判斷。 ??


overflowToDisk: 如果內存中數據超過內存限制,是否要緩存到磁盤上。 ??

??

以下屬性是可選的: ?

timeToIdleSeconds: 對象空閑時間,指對象在多長時間沒有被訪問就會失效。只對eternal為false的有效。默認值0,表示一直可以訪問。?

?

timeToLiveSeconds: 對象存活時間,指對象從創建到失效所需要的時間。只對eternal為false的有效。默認值0,表示一直可以訪問。 ?


diskPersistent: 是否在磁盤上持久化。指重啟jvm后,數據是否有效。默認為false。 ??


diskExpiryThreadIntervalSeconds: 對象檢測線程運行時間間隔。標識對象狀態的線程多長時間運行一次。 ??


diskSpoolBufferSizeMB: DiskStore使用的磁盤大小,默認值30MB。每個cache使用各自的DiskStore。 ??


memoryStoreEvictionPolicy: 如果內存中數據超過內存限制,向磁盤緩存時的策略。默認值LRU,可選FIFO、LFU。 ??


緩存的3 種清空策略

FIFO-first in first out (先進先出)。

LFU-Less Frequently Used (最少使用),意思是一直以來最少被使用的。緩存的元素有一個hit 屬性,hit 值最小的將會被清出緩存。 ?

LRU -Least Recently Used(最近最少使用),(ehcache 默認值).緩存的元素有一個時間戳,當緩存容量滿了,而又需要騰出地方來緩存新的元素的時候,那么現有緩存元素中時間戳離當前時間最遠的元素將被清出緩存。



緩存使用


使用Spring提供的注解即可,傳入vaue,key等注解需要的參數。



@Cacheable:先查緩存,有則不進行方法,沒有就進行方法再緩存起來。


@CachePut:每次都執行方法,再放入緩存。


@CacheEvict:讓緩存失效。


@Caching:以上3種注解可以組合使用。


總結

以上是生活随笔為你收集整理的Ehcache介绍及整合Spring实现高速缓存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。