问题描述
我有两个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)。