2012-07-13 17 views
10

Aşağıdaki kodla oluşturulan bir Guava önbelleği verildiğinde, ayarlanmadıysa maksimum bir önbellek boyutu var mı?Google Guava Önbelleği için varsayılan Maksimum Boyut nedir?

LoadingCache<String, String> loadingCache = CacheBuilder.newBuilder().build(new CacheLoader<String, String>() { 
    @Override 
    public String load(String key) throws Exception 
    { 
     return key.toUpperCase(); 
    } 
}); 

Benim durumumda, gerçekten büyük bir üst sınırı olmayan bir önbellek istiyorum. Oturum açmış kullanıcılar için izinleri depolamak için önbelleği kullanıyorum ve önbellekten kullanıcı oturumu veya oturum süresi dolduğunda öğeleri önbelleğe alacağım.

cevap

22

varsayılan önbellek sınırsız geçerli: javadoc for CacheBuilder

açıkladığı gibi bu özellikleri isteğe bağlıdır türlü gerçekleştirmez CacheBuilder tarafından oluşturulan varsayılan önbellek örnekleri By

ve

tahliye.

+0

Bağlantı için teşekkürler, sadece dün Guava hakkında öğrendim ve tarayıcımda çok sayıda açık sekme var. – ams

+0

Varsayılan "maximumSize" değerine ilişkin bölümü kaldırdılar mı? Daha yeni javadocs’larda herhangi bir yer bulamıyorum, ör. http://google.github.io/guava/releases/23.6-jre/api/docs/com/google/common/cache/CacheBuilder.html – Henrik

+0

@Henrik, varsayılan "maksimumSize" değerinde bir bölüm olmadı: as "Bu özelliklerin tümü isteğe bağlıdır" ve "CacheBuilder tarafından oluşturulan varsayılan önbellek örnekleri, herhangi bir türden bir tahminde bulunmayacaktır" ifadesiyle açıklanmıştır, _no_ varsayılan değer vardır, dolayısıyla tahliye yoktur. –

3

Eğer "varsayılan" değeri CacheBuilder.maximumSize() ise hiçbir zaman hiçbir zaman bir yanıt aranmaz.

Ve uygulamanızın boyut tabanlı tahliye stratejisine ihtiyacı olduğunu düşünmüyorum. Kullanıcı oturumları süresi dolduğunda, önbelleği (Cache.invalidate(key)) kaldırmanız yeterlidir.

Dize büyük harfinin önbelleğe gerek duymaması, büyük harfleri doğrudan aramak önbellekten çok daha kolay ve etkilidir.

İlgili konular