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?

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.