我正在使用infinispan 7.2.5版本进行内存缓存。访问该缓存,我正在使用Hotrod。因此,我有在群集模式下运行的hotrod服务器,并且该多个客户端可以使用hotrod客户端访问服务器。
我正在执行putAll操作以将数据放入缓存。现在我有一个要求,我们要将所有内容或不放入缓存中,因此在这里我的意思是putAll应该能够将所有数据放入缓存中,或者如果失败则不应该将任何内容添加到缓存中。我正在查看infinispan的文档,以检查putAll是否是原子的,但根据文档,它不是。
所以我的问题是:
如何使putAlll原子达到要求?
我也在考虑制作transactionMode高速缓存,但不确定在不影响性能的前提下能否解决我的问题?
这里的任何建议将不胜感激。
最佳答案
Infinispan不支持通过Hot Rod(*)进行事务,并且putAll不是原子的。在非事务嵌入式模式下,它也不是原子的。
最好的解决方法是运行事务,然后从script execution手动启动事务。
(*)服务器端支持已经存在,但客户端尚未实现。客户端实现在9.3或9.4路线图上(可能会发生变化)。