JCache API与无效集群缓存的使用情况

时间:2013-05-09 15:47:39

标签: java caching invalidation jcache

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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工作。本文中表达的观点和观点是我自己的,不一定反映我的雇主的意见或观点。