如何解决跨两个点火缓存的原子操作
我有两个ignite
缓存。他们两个都使用键/值对(并且不涉及数据库)来存储一些数据。
cache1
存储实际数据,而cache2
存储一些元数据。要求是即使出现任何问题,也要确保两个缓存始终保持同步。
有没有一种方法可以确保两个更新都能保证发生?如果其中一项操作失败,则另一项操作也应回滚。
这是示例代码
cache1.put(someKey,someValue);
// some other code
cache2.put(anotherKey,anotherValue);
如何确保两个缓存都没有更新?
解决方法
是的,您需要use transactions。例如:
Ignite ignite = Ignition.ignite();
IgniteTransactions transactions = ignite.transactions();
try (Transaction tx = transactions.txStart()) {
Integer hello = cache.get("Hello");
if (hello == 1)
cache.put("Hello",11);
cache.put("World",22);
tx.commit();
}
两个缓存都需要将atomicityMode参数设置为TRANSACTIONAL才能起作用(默认值为ATOMIC)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。