如何使putAll原子?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使putAll原子?相关的知识,希望对你有一定的参考价值。

我使用infinispan 7.2.5版本在内存缓存中。访问该缓存我正在使用Hotrod。所以我有一个在集群模式下运行的hotrod服务器,以及可以使用hotrod客户端访问服务器的多个客户端。

我正在做一个putAll操作将数据放入缓存。现在我有一个要求,我们想把所有东西都放在缓存中,所以我在这里的意思是putAll应该能够将所有数据放入缓存中,或者如果失败则不应该将任何内容添加到缓存中。我正在浏览infinispan的文档以检查putAll是否是原子的,但根据文档不是。

所以我的问题是:

  • 如何使putAlll原子化达到要求?

我还想创建transactionMode缓存,但不确定它是否解决了我的问题而不会对性能产生太大影响?

任何建议将不胜感激。

答案

Infinispan不支持Hot Rod(*)上的交易,而且putAll不是原子的。它在非事务性嵌入模式中也不是原子的。

最好的解决方法是运行事务,并从script execution手动启动事务。

(*)服务器端支持已经在,但客户端尚未实现。客户端实施在9.3或9.4的路线图上(可能会有变化)。

以上是关于如何使putAll原子?的主要内容,如果未能解决你的问题,请参考以下文章

如何使宏“原子”

如何使 PostgreSQL 函数原子化?

如何使多连接数据加载原子化?

如何在数据库中使龙卷风请求成为原子

如何合并两个JAVA Map

spark append 如何保证原子性