【问题标题】:JCache API usage with invalidation clustered cacheJCache API 使用失效集群缓存
【发布时间】:2013-05-09 15:47:38
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java caching invalidation jcache


    【解决方案1】:

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

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

    【讨论】:

    • 我将答案标记为正确,因为它包含我真正需要的信息。但是,我将在community.jboss.org/thread/228039 处对失效缓存的可用性提出更多问题
    【解决方案2】:

    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 工作。这篇文章中表达的观点和观点是我自己的,并不一定反映我雇主的观点或观点。

    【讨论】:

      猜你喜欢
      • 2021-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-07
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多