我想今天在一个可能不熟悉的问题上使用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绝对没有关于此事的文档......
有人能帮助我吗?
答案 0 :(得分:1)
Infinispan在其容器中使用MVCC用于内部目的,除了通过 writeSkewCheck 之外,目前这不是通过用户API公开的功能。
在版本5.1中,API将公开乐观锁定,这可能对某些需要利用MVCC功能的用例很有用,但您仍然无法提取以前的值。
您可以使用AtomicMap存储多个值,或使用包含该版本的自定义关键对象,在Infinispan API的基础上构建您需要的内容。
DeltaAware是另一种选择,但它是专为专家设计的低级接口。