点燃缓存 - 仅在满足条件时更新缓存条目的原子操作

Ignite cache - atomic operation to update cache entry only if condition is met

我想知道是否有一种方法可以有条件地对缓存条目进行原子更新,即。例如这样的事情:

cache.putCondtitionally(key, newEntity, (oldEntity, newEntity) -> oldEntity.timestamp().isBefore(newEntity.timestamp()))

我的具体用例是,我收到的实体更新可能是乱序的,我不想用“旧”实体覆盖缓存中已有的实体。如果我错过了一些更新,我没关系。

我想以 ATOMIC 模式(无锁,无事务)在缓存上管理它。

谢谢。

如果您有旧对象的副本,可以使用IgniteCache#replace(key, oldValue, newValue)

对于更复杂的事情,您可以使用 entry processor,它使用 IgniteCache#invoke() 方法。