Jaka jest różnica między MemoryCache.Add i MemoryCache.Set?


104

Przeczytałem dokumentację MSDN, ale tak naprawdę jej nie rozumiałem.

Uważam, że zachowanie Setjest „zastąp istniejące lub dodaj” (atomowo).

Czy to jest poprawne?

Odpowiedzi:


173

Addnic nie robi (zwraca false), jeśli istnieje już wartość dla tego klucza. Setw razie potrzeby wprowadza lub aktualizuje.

Remove+ Addpozostawiłoby lukę w środku, gdy inny wątek pytający o ten klucz nie dostałby żadnej wskazówki ( Setnie; wymiana jest zwykle atomowa); jako taki, chociaż Setma ten sam wynik końcowy co Remove+ Add, różnica w mechanizmach jest ważna, ponieważ może wpływać na innych rozmówców.

Na przykład Add :

Wartość zwracana

Wpisz: System.Boolean true, jeśli wstawienie powiodło się lub false, jeśli istnieje już wpis w pamięci podręcznej, który ma ten sam klucz co klucz.


1
Czy setzastępuje zasady, jeśli przedmiot istnieje?
TS

1
Właśnie zobaczyłem twoją prawie roczną wiadomość, pracuję nad podobnym problemem. Wszystkie przeciążenia zestawu SET wymagają zasad, więc odpowiedź brzmi tak.
user2223142
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.