1

我对 ehcache 2.0 有一个奇怪的问题,希望有人可以帮助我。我已经建立了一个由两台主机 A 和 B 组成的集群。我可以看到两端都收到了心跳,所以我很确定网络和多播工作正常。问题是我将一个元素放入主机 A 的缓存中,我可以在主机 B 的日志中看到它接收到远程放置。但是当我从主机 B 请求相同的元素时,它会运行到数据库并执行查询。这可能是什么原因?感谢您的任何指点!

4

2 回答 2

0

您是否使用 Hibernate 和 Ehcache 作为二级缓存?或者只是数据库上方的缓存?

于 2010-03-19T00:09:06.153 回答
0

根据您的描述,您在 RMI 模式下运行 ehcache 并带有多播自动对等发现。听起来缓存事件通知也在起作用。这是我的猜测:

根据您配置中的到期设置,当您从主机 B“获取”时,该元素可能已到期。

在文档http://ehcache.org/documentation/storage_options.html中,在 Memory Use、Spooling 和 Expiry Strategy 下:

当元素上有 get 或 getQuiet 时,会检查它是否过期。如果过期,则将其删除并返回 null。

您可以查看您的配置文件,检查永恒、timeToIdleSeconds 和 timeToLiveSeconds 的值。

<cache name="sampleDistributedCache2"
       maxElementsInMemory="10"
       eternal="false"                         
       timeToIdleSeconds="100"
       timeToLiveSeconds="100"
       overflowToDisk="false"></cache>
于 2010-03-19T00:38:18.380 回答