Какая разница между MemoryCache.Add и MemoryCache.Set?

Я прочитал документацию MSDN, но на самом деле не понял.

Я считаю, что поведение Set означает "заменить существующее или добавить" (атомарно).

Правильно ли это?

Ответ 1

Add ничего не делает (возвращает false), если уже есть значение для этого ключа. Set при необходимости вставляет или обновляет.

Remove + Add оставит промежуток посередине, когда другой поток, запрашивающий этот ключ, не получит никакой подсказки (Set does not; swap обычно является атомарным); как таковой, в то время как Set имеет тот же конечный результат как Remove + Add, разница в механизме важна, поскольку это может повлиять на других вызывающих абонентов.

Например Добавить:

Возвращаемое значение

Тип: System.Boolean true, если вставка выполнена успешно, или false, если в кеше уже есть запись с тем же ключом, что и ключ.