0

集群失效键值缓存仅通过网络发送删除命令。当在一个节点上更改或删除键的值时,将使用该键将删除命令发送到每个其他节点,因此他们需要在下次需要时从持久存储中获取该数据(或重新计算)。

我的问题是:它是如何基于 javax.cache.Cache 接口定义的?那里有 put, putIfAbsent, replace, ... 函数。

使用 Infinispan-jcache 当两个不同的节点上存在相同的键时,我不能有行为。我在他们的用户论坛https://community.jboss.org/thread/228039上问了同样的问题,但我认为这是一个更常见的问题,所有 JSR-107 实现都会受到影响。

我检查了规范草案,但在那里我找不到任何关于集群和失效的信息。

4

2 回答 2

1

Infinispan 的工作方式是正确的。失效是指当一个节点收到一个put/replace/putIfAbsent/remove调用时,它会向其他节点发送一条消息来删除该条目。因此,当条目存储在 cache2 中时,它会从 cache1 中删除。它不验证值是否相同。

JSR-107 没有指定缓存在集群中的行为方式。JSR-107 只关注本地缓存。Infinispan 缓存的行为,即使在 JCache API 下,对于无效的、分布式的和复制的缓存也是特定于 Infinispan 的。

于 2013-10-25T08:33:16.533 回答
0

JCache 标准现在是最终版本。见:https ://jcp.org/en/jsr/detail?id=107

您可以在以下位置找到代码:https ://github.com/jsr107

如果您需要 JCache 的实现,我知道今天唯一可用的是 Oracle Coherence;请参阅:http ://docs.oracle.com/middleware/1213/coherence/develop-applications/jcache_part.htm

为了全面披露,我在 Oracle 工作。这篇文章中表达的观点和观点是我自己的,并不一定反映我雇主的观点或观点。

于 2014-07-11T13:50:18.423 回答