我有两个帖子, 每个线程添加/修改点火缓存的值,它喜欢:
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()
或者我使用Atomic到缓存配置来点火为我自动执行此操作, 或者我需要使用TRANSACTIONAL来缓存,并为缓存添加锁定?
还是有更好的方法来避免锁定以达到高性能?
答案 0 :(得分:2)
我建议在此用例中使用EntryProcessor
:https://apacheignite.readme.io/docs/jcache#entryprocessor