点燃缓存 - 仅在满足条件时更新缓存条目的原子操作
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()
方法。
我想知道是否有一种方法可以有条件地对缓存条目进行原子更新,即。例如这样的事情:
cache.putCondtitionally(key, newEntity, (oldEntity, newEntity) -> oldEntity.timestamp().isBefore(newEntity.timestamp()))
我的具体用例是,我收到的实体更新可能是乱序的,我不想用“旧”实体覆盖缓存中已有的实体。如果我错过了一些更新,我没关系。
我想以 ATOMIC 模式(无锁,无事务)在缓存上管理它。
谢谢。
如果您有旧对象的副本,可以使用IgniteCache#replace(key, oldValue, newValue)
。
对于更复杂的事情,您可以使用 entry processor,它使用 IgniteCache#invoke()
方法。