微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

跨两个点火缓存的原子操作

如何解决跨两个点火缓存的原子操作

我有两个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 举报,一经查实,本站将立刻删除。