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

Sto*_*orm 93 .net memorycache

我阅读了MSDN文档但没有真正理解它.

我认为行为Set是"替换现有的,或添加"(原子地).

那是对的吗?

Mar*_*ell 157

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

RemoveAdd当查询该密钥的另一个线程没有得到任何线索时,+ 会在中间留下间隙(Set不是;交换通常是原子的); 因此,尽管与+ Set具有相同的最终结果,但机制差异很重要,因为它可能会影响其他呼叫者.RemoveAdd

例如Add:

回报价值

类型:System.Boolean如果插入成功则为true;如果缓存中已存在与key具有相同键的条目,则为false.

  • 如果项目存在,“set”是否会替换策略? (2认同)
  • 我刚刚看到你近一年前的消息,我正在研究类似的问题。所有 SET 重载都需要策略,所以答案是肯定的。 (2认同)