我有两个线程,每个线程添加/修改 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