我正在查看EhCache统计数据,我看到这些数据:
CacheMisses:75977
CacheHits:38151InMemoryCacheMisses:4843
InMemoryCacheHits:38151
“memory”是唯一的商店 - 没有堆外和没有磁盘存储(overflowToDisk="false", diskPersistent="false"
)。那么这两个意味着什么呢?我希望它们是相同的(命中是相同的),但是失误差别很大。
答案 0 :(得分:1)
您的缓存中是否有null
个值Element
? (Ehcache允许您存储Element
个null
值,但我不确定是否存在任何限制。
查看2.5.3版本中Cache.searchInStoreWithStats(Object key)的代码,似乎有一个错误:
inMemoryMisses
的测试使用containsKey()
衍生物,cacheMisses
派生词的结果递增get()
空值的测试。因此,每当您搜索InMemoryStore
中存在但具有null
值的密钥时,它将增加cacheMisses
但不会增加inMemoryMisses
。
所以,我可能会完全离开,但它对我来说闻起来很香。你觉得怎么样?
编辑:我意识到我的解释是错误的 - 元素不能为空,(但它的'value'可以为null)。无论如何,我会在这里留下这个答案,因为它会引发任何其他想法
答案 1 :(得分:0)
我相信您使用的是ehcache 2.5+。如果您将diskpersistance的cacheconfiguration设置为true(尽管overflowtodisk为false),则会写入磁盘。那么也可能有磁盘?您可以在统计信息中查看它们。你有discpersistance真实吗?请发布您的缓存配置