我的Java應用程序有一個緩存,我想換出當前的緩存實現並將其替換爲番石榴緩存。使用沒有加載函數的番石榴高速緩存
不幸的是,我的應用程序的緩存使用似乎不符合番石榴的緩存似乎工作的方式。我想要的只是能夠創建一個空的緩存,使用「get」方法從緩存中讀取一個項目,並使用「put」方法將項目存儲在緩存中。我不希望「get」調用嘗試將項目添加到緩存中。
看來,LoadingCache類具有我需要的get和put方法。但是我無法確定如何在不提供「加載」功能的情況下創建緩存。
我第一次嘗試是這樣的:
LoadingCache<String, String> CACHE = CacheBuilder.newBuilder().build();
但導致該編譯器錯誤:不兼容的類型;沒有類型變量K1,V1的實例存在,因此Cache符合LoadingCache
顯然,我必須傳入一個具有「加載」方法的CacheLoader。
(我想我可能會創建一個「負載」的方法,只是拋出異常的緩存加載器,但似乎有點古怪,效率低下。那是正確的事是什麼?)
我會試圖說(從你發佈的信息),它聽起來不像是一個緩存,而不僅僅是一個地圖。 –
@ Sean Parsons:恕我直言,Cache和Map之間更重要的區別是前者可能隨時都會遺忘。加載是一個附加功能。 – maaartinus
我更試圖闡明它是否真的是緩存。 –