Was ist der Unterschied zwischen MemoryCache.Add und MemoryCache.Set?

104

Ich habe die MSDN-Dokumentation gelesen , aber nicht wirklich verstanden.

Ich glaube, dass das Verhalten von Set"vorhanden ersetzen oder hinzufügen" (atomar) ist.

Ist das korrekt?

Sturm
quelle

Antworten:

172

Addtut nichts (gibt zurück false), wenn für diesen Schlüssel bereits ein Wert vorhanden ist. Setführt nach Bedarf eine Einfügung oder Aktualisierung durch.

Remove+ Addwürde eine Lücke in der Mitte hinterlassen, wenn ein anderer Thread, der diesen Schlüssel abfragt, keinen Hinweis erhält ( Setnicht; der Swap ist normalerweise atomar); Obwohl dies Setdas gleiche Endergebnis wie Remove+ hat Add, ist der Mechanismusunterschied wichtig, da er sich auf andere Anrufer auswirken kann.

Zum Beispiel von Hinzufügen :

Rückgabewert

Typ: System.Boolean true, wenn das Einfügen erfolgreich war, oder false, wenn bereits ein Eintrag im Cache vorhanden ist, der denselben Schlüssel wie key hat.

Marc Gravell
quelle
1
Ersetzt setdie Richtlinie, wenn ein Element vorhanden ist?
TS
1
Ich habe gerade Ihre fast einjährige Nachricht gesehen, ich arbeite an einem ähnlichen Thema. Alle SET-Überladungen erfordern eine Richtlinie, daher lautet die Antwort Ja.
user2223142