Erlang ets:为行李插入新的

Erlang ets:为行李插入新的,erlang,ets,Erlang,Ets,在我的代码中,我想利用ETS的包类型,它可以为一个键存储多个值。但是,了解插入是否真的插入了新值(即带值的插入键是否存在于包中)将非常有用 对于ETS的类型集,我可以使用ETS:insert_new,但bag的语义不同(强调我的): 此函数的工作原理与insert/2完全相同,只是它不使用相同的键覆盖对象(在set或ordered_set的情况下)或添加表中已有键的更多对象(在bag和duplicate_bag的情况下),而只是返回false 有没有一种方法可以通过一次调用实现这种功能?我知道这

在我的代码中,我想利用ETS的包类型,它可以为一个键存储多个值。但是,了解插入是否真的插入了新值(即带值的插入键是否存在于包中)将非常有用

对于ETS的类型集,我可以使用ETS:insert_new,但bag的语义不同(强调我的):

此函数的工作原理与insert/2完全相同,只是它不使用相同的键覆盖对象(在set或ordered_set的情况下)或添加表中已有键的更多对象(在bag和duplicate_bag的情况下),而只是返回false


有没有一种方法可以通过一次调用实现这种功能?我知道这可以通过先查找,然后选择插入来实现,但我担心这可能会影响并发访问的性能。

检查是否存在密钥的最快方法是使用
ets:member/2
,它只返回
true
false
。ETS无法以原子方式对ETS表进行多次访问。这是一个简单的无数据库存储。我不能使用
ets:member/2
,因为我需要检查键和值(ets有bag类型)。