Qual è la differenza tra MemoryCache.Add e MemoryCache.Set?


104

Ho letto la documentazione MSDN ma non l'ho capito veramente.

Credo che il comportamento di Setè "sostituire esistente, o aggiungere" (atomicamente).

È corretto?

Risposte:


173

Addnon fa nulla (restituisce false) se esiste già un valore per quella chiave. Setfa un inserimento o aggiornamento, se necessario.

Remove+ Addlascerebbe uno spazio nel mezzo quando un altro thread che interroga quella chiave non ottiene indizi ( Setno; lo scambio è tipicamente atomico); in quanto tale, sebbene Setabbia lo stesso risultato finale di Remove+ Add, la differenza del meccanismo è importante poiché potrebbe influire su altri chiamanti.

Ad esempio di Aggiungi :

Valore di ritorno

Digitare: System.Boolean true se l'inserimento è riuscito o false se è già presente una voce nella cache che ha la stessa chiave della chiave.


1
Non setsostituisce la politica, se esiste articolo?
TS

1
Ho appena visto il tuo messaggio di quasi un anno, sto lavorando a un problema simile. Tutti gli overload SET richiedono una policy, quindi la risposta è sì.
user2223142
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.