В чем разница между MemoryCache.Add и MemoryCache.Set? - PullRequest
87 голосов
/ 15 января 2012

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

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

Это правильно?

1 Ответ

150 голосов
/ 15 января 2012

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

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

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

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

...