我在我的一个库中使用 Guava 缓存,并且我公司的其他一些服务(由其他团队管理)正在使用该库。从我的图书馆我cache stats
每次都在记录50000
。以下是我在记录时看到的输出
Cache Stats= CacheStats{hitCount=3296628, missCount=1353372, loadSuccessCount=1353138, loadExceptionCount=0, totalLoadTime=2268064327604, evictionCount=1325410}
Cache Stats= CacheStats{hitCount=3334167, missCount=1365834, loadSuccessCount=1365597, loadExceptionCount=0, totalLoadTime=2287551024797, evictionCount=1337740}
Cache Stats= CacheStats{hitCount=3371463, missCount=1378536, loadSuccessCount=1378296, loadExceptionCount=0, totalLoadTime=2309012047459, evictionCount=1350990}
Cache Stats= CacheStats{hitCount=3407719, missCount=1392280, loadSuccessCount=1392039, loadExceptionCount=0, totalLoadTime=2331355983194, evictionCount=1364535}
Cache Stats= CacheStats{hitCount=3443848, missCount=1406152, loadSuccessCount=1405908, loadExceptionCount=0, totalLoadTime=2354162371299, evictionCount=1378654}
而我的缓存配置如下图:
CacheBuilder
.newBuilder()
.maximumSize(1000000)
.expireAfterWrite(120, TimeUnit.SECONDS)
.concurrencyLevel(5000)
.removalListener(
RemovalListeners.asynchronous(new CustomListener(),
Executors.newSingleThreadScheduledExecutor())).build();
谁能帮助我了解我们的命中率以及如何解释上述缓存指标?我很困惑这些数字告诉我什么。基于上述结果,如果我们向上maximumSize
或expireAfterWrite
间隔,我们可以看到更好的性能吗?
注意:我们仍在使用 guava-11.0.2,由于某种原因我无法升级。