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

时间:2018-04-16 19:06:58

标签: 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()

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

还是有更好的方法来避免锁定以达到高性能?

1 个答案:

答案 0 :(得分:2)

我建议在此用例中使用EntryProcessorhttps://apacheignite.readme.io/docs/jcache#entryprocessor