ignite - 点燃/GridGain putAllIfAbsent
问题描述
我使用 GridGain 作为我的持久性数据库。我有以下要求。
- 如果键不存在,则插入多条记录
- 如果 key 存在或不存在,则放置多条记录。
对于 1,我看到cache.putIfAbsent(key, value)
了如果不存在则插入单个记录的方法。但我没有找到cache.putAllIfAbsent(Map<key, value>)
类似的方法。我可以循环以一一插入多条记录。是否存在性能问题?
对于2,我认为我可以使用cache.putAll(Map<key, value>)
方法。如果是正确的方法?
我在谷歌云 Kubernetes 引擎中作为胖客户端运行服务器。
解决方案
putAll
总是覆盖现有记录putIfAbsent
在一个循环中会比putAll
. 衡量你的具体用例,看看有多少
如果对排序和原子性没有要求,DataStreamer是一个不错的选择。当allowOverwrite
flag 为 false(默认)时,您将获得putIfAbsent
行为和良好的性能。
try (IgniteDataStreamer<Integer, String> stmr = ignite.dataStreamer("myCache")) {
stmr.allowOverwrite(false); // Don't overwrite existing data
Map<Integer, String> entries = getMydata()
stmr.addData(entries);
}
推荐阅读
- python - 如何从列表中删除重复值但使用循环让其中一个列表存在..我已尽力弄清楚但无法
- css - 可能带有过渡和模糊元素的 Chrome 错误
- html - SVG 路径大于 svg 容器
- c# - 如何指定单元格模板中使用的 XAML 仅在工具提示出现时执行?
- cypress - 如何获取元素的值并评估它在赛普拉斯中是否为负?
- karate - 在空手道中使用 jsonpath 检索 json 数组对象时出错
- javascript - TypeError:无法设置未定义的属性“旧”
- angular - 打字稿如何在没有引用的情况下复制对象
- xwiki - XWiki 自动通知电子邮件在超链接中包含一个额外的“/bin/”
- python - tf_sentencepiece、_sentencepiece_processor_ops.so.2.0.0-beta1 的问题:没有这样的文件或目录