В чем разница между MemoryCache.Add и MemoryCache.Set?

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

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

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


person Storm    schedule 15.01.2012    source источник


Ответы (1)


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

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

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

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

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

person Marc Gravell    schedule 15.01.2012
comment
Заменяет ли set политику, если элемент существует? - person T.S.; 06.08.2019
comment
Я только что увидел ваше сообщение почти годичной давности, я работаю над аналогичной проблемой. Для всех перегрузок SET требуется политика, поэтому ответ положительный. - person user2223142; 25.05.2020
comment
если я использую функцию «Добавить» для просроченного кеша? будет ли он заменен обновленным CacheItem? - person aj go; 29.01.2021