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