MemoryCache.Add和MemoryCache.Set有什么区别?


104

我阅读了MSDN文档,但并不太了解。

我相信的行为Set是“替换现有的或添加的”(原子上)。

那是对的吗?

Answers:


173

Addfalse如果该键已经有值,则不执行任何操作(返回)。Set根据需要进行插入或更新。

RemoveAdd当另一个查询该键的线程没有任何线索时,+ 会在中间留下一个空白(Set不会;交换通常是原子的);因此,虽然最终结果与+ Set相同,但机制差异很重要,因为它可能会影响其他调用者。RemoveAdd

例如Add

返回值

类型:System.Boolean如果插入成功,则为true;如果高速缓存中已有与键相同的项,则为false。


1
set如果项目存在,是否替代政策?
TS TS

1
我刚刚看到了您将近一岁的信息,我正在处理类似的问题。所有SET重载都需要一个策略,因此答案是肯定的。
user2223142
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.