我在ehcache2.0上有一个奇怪的问题,我希望有人能帮我解决。我已经设置了一个由两台主机A和B组成的集群。我可以看到两端都收到了心跳,所以我非常确定网络和组播工作正常。问题是,我将一个元素放入主机A的缓存中,我可以在主机B的日志中看到它接收到远程put。但是,当我从主机B请求相同的元素时,它会跑到数据库并执行查询。这可能是什么原因造成的?感谢您的指点!
发布于 2010-03-19 08:09:06
您是否使用Hibernate和Ehcache作为二级缓存?或者仅仅是DB之上的缓存?
发布于 2010-03-19 08:38:18
根据您的描述,您正在RMI模式下运行ehcache,具有多播自动对等点发现功能。听起来缓存事件通知也在起作用。这是我的推测:
根据配置中的过期设置,当您从主机B“获取”时,元素可能已经过期。
在文档http://ehcache.org/documentation/storage_options.html中,在内存使用、假脱机和到期策略下:
当元素上有get或getQuiet时,将检查元素是否过期。如果过期,则将其删除并返回null。
您可以查看您的配置文件,检查eternal、timeToIdleSeconds和timeToLiveSeconds的值。
<cache name="sampleDistributedCache2"
maxElementsInMemory="10"
eternal="false"
timeToIdleSeconds="100"
timeToLiveSeconds="100"
overflowToDisk="false"></cache>https://stackoverflow.com/questions/2371608
复制相似问题