2014-11-03 70 views
1

我有一個Guava緩存,我希望在密鑰的最後一次訪問過去X分鐘後過期。但是,我也會定期對所有當前鍵值進行操作(比X分鐘頻率更頻繁),而且我不希望將其視爲對鍵值對的訪問,因爲這樣鍵將永遠不會到期。番石榴高速緩存:如果沒有它計算驅逐政策如何訪問?

有沒有一些方法來讀取密鑰的值,而不會影響緩存的內部狀態?即cache._secretvalues.get(key)在哪裏我可以想像的子類緩存到StealthCache和getStealth(key)?我知道依靠內部的東西是不理想的,只是想知道它是否可能。我認爲當我做cache.asMap.get()時,它仍然在內部被視爲一個訪問。

回答

0

official Guava tutorials

訪問時間是由所有的緩存重置讀取和寫入操作(包括 Cache.asMap()得到(對象)和Cache.asMap()把(K,V。 )),但不包含 containsKey(Object),也不受 Cache.asMap()的collection-views操作的影響。 因此,例如,遍歷cache.entrySet() 不會重置您檢索的條目的訪問時間。

所以,我要做的是迭代通過entrySet,而不是做我的隱形操作。

+0

爲此寫了一些測試,它工作正常 – grasshopper 2014-11-03 12:13:04