2011-11-10 46 views
4

圖片製作一個Spring服務,以下列方式:的Ehcache元件使用壽命緩存

 
+--------+   +---------+    +---------+ 
|Backend | --------- | My  | ----------- | Clients | 
|service |   | service |    |   | 
+--------+   +---------+    +---------+ 

爲了不作過多的要求到後端,我使用的Ehcache。 想象一下,我的服務是一個體育門戶,我緩存結果,以便當客戶端請求它們時,我返回緩存,如果沒有緩存,我從後端獲取信息,將其放入緩存,然後將其返回給客戶端。現在

,如果我有這些參數設置

long timeToLiveSeconds 
long timeToIdleSeconds 

和客戶端發出請求過於頻繁,則timeToIdleSeconds不會過期,但timeToLiveSeconds無論如何都會到期,元素會從緩存中被移除我已經說過了,對吧?

回答

4

是的,你是對的。

例如:

timeToIdleSeconds = 30:如果30秒內未請求緩存的對象,它過期=>上次訪問時間計算

timeToLiveSeconds = 60:60秒後緩存對象將過期 - 不管如何往往被要求或根本=>創建時間要求計算

從文檔(舊版本1.4):

timeToIdleSeconds: 設置元素到期前的空閒時間。 即元素到期之前訪問之間的最大時間間隔 僅當元素不是永恆時才使用。 可選屬性。值爲0意味着元素可以空閒無限。 默認值爲0.

timeToLiveSeconds: 設置元素到期之前的生存時間。 即創建時間和元素到期之間的最長時間。 僅當元素不是永恆時才使用。 可選屬性。值爲0意味着元素可以無限生活。 默認值爲0。

0

在同時設置的情況下,expirationTimeMath.min(ttlExpiry, ttiExpiry),其中

ttlExpiry = creationTime + timeToLive 
ttiExpiry = mostRecentTime + timeToIdle 

完整的源代碼here