首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >相当于ehcache的copyOnRead和copyOnWrite的Infinispan.

相当于ehcache的copyOnRead和copyOnWrite的Infinispan.
EN

Stack Overflow用户
提问于 2010-05-25 22:29:03
回答 3查看 2.1K关注 0票数 4

我计划在现有的web应用程序中实现缓存解决方案。没什么复杂的:基本上是一个并发映射,支持溢出到磁盘和自动驱逐。将来可能需要对缓存进行集群,但不是现在。

我喜欢ehcache的copyOnRead和copyOnWrite特性,因为这意味着我不必在修改从缓存中取出的内容之前手动克隆内容。现在我已经开始研究Infinispan了,但是我还没有找到任何与之类似的东西。它存在吗?

也就是说,以下单元测试应该通过:

代码语言:javascript
运行
复制
@Test
public void testCopyOnWrite() {
    Date date = new Date(0);
    cache.put(0, date);
    date.setTime(1000);
    date = cache.get(0);
    assertEquals(0, date.getTime());
}

@Test
public void testCopyOnRead() {
    Date date = new Date(0);
    cache.put(0, date);
    assertNotSame(cache.get(0), cache.get(0));
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-25 23:08:35

根据一位JBoss开发人员的说法,英飞凌目前还不支持这样的功能。您应该在Infinispan issue tracker中记录一个增强请求,以便其他人可以对其进行投票(我会的)。

也就是说,如果您现在需要此功能,一种变通方法是扩展AbstractDelegatingCache,并覆盖getput方法以添加此功能。你可以使用你自己的复制策略,或者看看EHCache是如何做到这一点的。

此外,如果您有进一步的问题,可以考虑Infinispan forum,因为您将从Infinispan社区获得更多观点。

票数 2
EN

Stack Overflow用户

发布于 2011-06-02 17:46:10

Infinispan确实支持copyOnRead/copyOnWrite,尽管实际格式是不可插拔的。配置元素是Infinispan4.x中的和Infinispan5.x中的。对象使用可插拔的Marshaller框架进行序列化,该框架用于所有形式的编组,包括通过网络和存储到磁盘的RPC调用。

票数 7
EN

Stack Overflow用户

发布于 2013-11-12 01:31:29

我相信只有当对象需要序列化时,storeAsBinary才会生效,这意味着当调用put操作时,所有者不是当前节点。

这也意味着,如果key 0的所有者不是当前节点,则问题中的测试用例可以通过,但如果是单节点环境,则测试用例仍然会失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2905587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档