MemoryCache.AddとMemoryCache.Setの違いは何ですか?


104

MSDNのドキュメントを読みましたが、理解できませんでした。

の動作Setは「既存のものを置き換える、または追加する」(原子的に)と考えています。

あれは正しいですか?

回答:


173

Addfalseそのキーの値がすでにある場合は、何もしません(を返します)。Set必要に応じて、挿入または更新を行います。

Remove+ Addは、そのキーをクエリする別のスレッドが手がかりを取得できないときに、ギャップを残します(取得Setしません。スワップは通常アトミックです)。しながらなど、Set同じ有する最終結果としてRemove+をAdd、それが他の発信者に影響を与える可能性があるため、機構の違いが重要です。

追加の例:

戻り値

型:System.Boolean挿入が成功した場合はtrue、keyと同じキーを持つエントリがキャッシュに既に存在する場合はfalse。


1
DOESは、setアイテムが存在する場合にポリシーを置き換え?
TS

1
私はちょうどあなたのほぼ1年前のメッセージを見た、私は同様の問題に取り組んでいます。すべてのSETオーバーロードにはポリシーが必要なので、答えは「はい」です。
user2223142
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.