我应该添加锁来点燃缓存,因为它将在不同的线程中读/写



我有两个线程,每个线程添加/修改 ignite 缓存的值,它喜欢:

cache = ignite.getOrCreateCache("IniteTestCache")
valMap = cache.get(key)

获取值 valMap(java map( 中的项目,处理它,然后删除它,然后更新缓存: cache.put(key, a)valMap物品失望,

在另一个线程中:

cache = ignite.getOrCreateCache("IniteTestCache")
valMap = cache.get(key)

将新项目添加到valMap,然后将其放回缓存 cache.put(key, a)向其添加新项

问题:
当我使用相同的键操作同一个缓存时,我应该添加锁吗作为:

lock()
value=cache.get(key)
modification to value
cache.put(key,value)
unlock()

或者我使用原子到缓存配置使点火自动为我执行此操作,或者我需要使用 TRANSACTIONAL 来缓存,并将锁添加到缓存?

或者有一些更好的方法来避免锁定以实现高性能?

我建议在这个用例中使用EntryProcessor:https://apacheignite.readme.io/docs/jcache#entryprocessor

最新更新