【发布时间】:2018-08-06 17:31:54
【问题描述】:
我正在使用 infinispan 7.2.5 版本进行内存缓存。要访问我正在使用 Hotrod 的缓存。所以我让 hotrod 服务器在集群模式下运行,并且多个客户端可以使用 hotrod 客户端访问服务器。
我正在执行 putAll 操作以将数据放入缓存。现在我有一个要求,我们希望将所有内容或任何内容都放入缓存中,所以我的意思是 putAll 应该能够将所有数据放入缓存中,或者如果失败,则不应将任何内容添加到缓存中。我正在查看 infinispan 的文档以检查 putAll 是否是原子的,但根据文档它不是。
所以我的问题是:
- 如何使 putAllll 原子化以实现需求?
我也在考虑让 transactionMode 缓存,但不确定它是否可以解决我的问题而不影响性能?
这里的任何建议将不胜感激。
【问题讨论】:
-
""我也在考虑让 transactionMode 缓存,但不确定它是否可以在不影响性能的情况下解决我的问题? 软件开发中的一切都涉及权衡。如果你想要一个原子的
putAll(),你必须决定使用事务的性能影响是否比原子性更重要。没有免费的午餐。 -
谢谢@JimGarrison 明白了你的意思,你能给我示例代码链接或一些文档如何实现它作为参考,因为我对此不太了解。
-
不,这不是 StackOverflow 的工作方式。您应该进行研究和学习。要求示例代码或外部链接显然是题外话。请访问help center 并阅读How to Ask。研究手册,编写一些代码,然后问一个具体的问题是否有异常行为。
-
好的,我会尝试这部分...但是除了 transactionMode 缓存之外,我们还有其他方法来实现 atomic put 吗?
-
不,没有其他方法:事务确保多个操作对其他操作/参与者显示为一个。正如@JimGarrison 所说,你不能得到免费的午餐。
标签: java transactions infinispan hot-rod