1

我正在尝试编写一个可以跟踪所有 Ehcache GET 请求的类。对于性能痴迷 - 这只会出于调试目的而打开。

我可以看到以下三个可用选项:

1)写一个实现net.sf.ehcache.event.CacheEventListener。这将是我的首选方式,但它只有 PUT/REMOVE/等。钩子。没有得到。嗬!

2)写一个实现net.sf.ehcache.statistics.CacheUsageListener。这种方法的问题在于,这个接口更多地是为统计而设计的,甚至不提供对当前缓存键/元素之类的访问,所以我必须做一些可怕的黑客攻击(想想:通过共享状态ThreadLocal)来实现我想要的。呸!

3) 编写一个 Ehcache 包装器,并通过它引导所有请求。当我们以不同的方式(使用 Hibernate 和不使用 Hibernate)使用 Ehcache 时,这非常痛苦,这意味着我必须为所有这些不同的情况编写不同的包装器。增加了维护的麻烦,而且不是很精确,因为不可能知道,例如,GET 操作是否命中了一个陈旧的条目。

还有其他我错过的选择吗?

4

1 回答 1

1

第四个选项是为 net.sf.ehcache.Cache 启用调试级别日志记录,为要跟踪信息的缓存启用缓存统计信息。然后你会得到“缓存:”+getName()+“存储命中”+键或“configuration.getName()+”缓存命中,但元素过期””日志语句......所以对于未命中也是如此。

于 2011-11-01T14:54:17.197 回答