Infinispan MVCC与“放”

时间:2011-10-25 23:13:38

标签: java jboss infinispan

我想今天在一个可能不熟悉的问题上使用Infinispan。 我想保存一个变量,让我们在缓存中多次调用它x,同时能够将它作为X进行处理。

平原,老MVCC。但是,似乎infinispan在后端使用MVCC - 但我无法在我的小测试应用程序中使用它。

这是相应的代码:

    acTest.put("test", "blubber", 0, TimeUnit.MILLISECONDS );
    acTest.put("test", "nothing", 0, TimeUnit.MILLISECONDS );

    if( acTest.containsKey("test") )
    {
        Object foo = acTest.get("test"); // don't know how to get the "blubber" out of that
        String name = (String) test2.get("name");
        System.out.println(name);
    }

果然,acTest包含了密钥 - 但是我无法对该密钥的“blubber”值进行处理 - 当我更高的“没有”数值时foo保持“没有”......但我想得到第一个版本的“foo” - 因此“blubber”

我希望能够使用不同版本的测试。我认为我可以使用 put 操作中的不同参数创建不同版本的“test” - 但是eclipse绝对没有关于此事的文档......

有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

Infinispan在其容器中使用MVCC用于内部目的,除了通过 writeSkewCheck 之外,目前这不是通过用户API公开的功能。

在版本5.1中,API将公开乐观锁定,这可能对某些需要利用MVCC功能的用例很有用,但您仍然无法提取以前的值。

您可以使用AtomicMap存储多个值,或使用包含该版本的自定义关键对象,在Infinispan API的基础上构建您需要的内容。

DeltaAware是另一种选择,但它是专为专家设计的低级接口。