Grails缓存插件:为什么我们在CacheKey中有targetObjectHashCode?

时间:2015-07-16 18:18:25

标签: grails caching grails-plugin

Grails缓存插件的自定义缓存键有以下四个元素:

grails.plugin.cache.CustomCacheKeyGenerator$CacheKey {
    final String targetClassName;
    final String targetMethodName;
    final int targetObjectHashCode;
    final Object simpleKey;
}

完整的来源可用here

我需要了解为什么我们将 targetObjectHashCode 作为密钥的一部分?

我之所以这样问是因为它在使用ehcache(启用了 diskPersistent )时会导致缓存未命中。

在大多数情况下,目标对象是DAO;他们不会实现 hashCode()。现在每次JVM重新启动时,从磁盘加载的所有元素都会有缓存未命中,因为目标对象的哈希码会发生变化。

0 个答案:

没有答案