Quelle est la différence entre MemoryCache.Add et MemoryCache.Set?

104

J'ai lu la documentation MSDN mais je ne l'ai pas vraiment comprise.

Je crois que le comportement de Setest "remplacer l'existant, ou ajouter" (atomiquement).

Est-ce exact?

Tempête
la source

Réponses:

173

Addne fait rien (retourne false) s'il existe déjà une valeur pour cette clé. Setfait une insertion ou une mise à jour, si nécessaire.

Remove+ Addlaisserait un espace au milieu lorsqu'un autre thread interrogeant cette clé n'obtiendrait aucun indice ( Setne le fait pas; le swap est généralement atomique); en tant que tel, bien qu'il Setait le même résultat final que Remove+ Add, la différence de mécanisme est importante car elle pourrait avoir un impact sur d'autres appelants.

Par exemple de Add :

Valeur de retour

Tapez: System.Boolean true si l'insertion a réussi ou false s'il existe déjà une entrée dans le cache qui a la même clé que la clé.

Marc Gravell
la source
1
Remplace-t-il la setpolitique si l'article existe?
TS
1
Je viens de voir votre message vieux de presque un an, je travaille sur un problème similaire. Toutes les surcharges SET nécessitent une stratégie, la réponse est donc oui.
user2223142