2013-05-09 61 views
0

集群失效键值缓存仅通过网络发送删除命令。如果在一个节点上更改或删除密钥的值,则会将该密钥的remove命令与其他节点一起发送,以便他们在下次需要时从持久存储中获取该数据(或重新计算该数据)。JCache API使用失效集群缓存

我的问题是:它是如何基于javax.cache.Cache接口定义的?在那里放置,putIfAbsent,替换......功能。

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

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

回答

1

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

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

+0

我标记的答案是正确的,因为它包含我真正需要的信息。不过,我将在https://community.jboss.org/thread/228039上提供有关无效缓存可用性的更多问题 – 2013-10-25 08:55:59

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工作。本文所表达的意见和观点属于我自己的观点,并不一定反映我的雇主的意见或看法。