Qual é a diferença entre MemoryCache.Add e MemoryCache.Set?

104

Eu li a documentação do MSDN, mas realmente não entendi.

Acredito que o comportamento de Seté "substituir existente, ou adicionar" (atomicamente).

Isso é correto?

Tempestade
fonte

Respostas:

173

Addnão faz nada (retorna false) se já houver um valor para aquela chave. Setfaz uma inserção ou atualização, conforme necessário.

Remove+ Adddeixaria uma lacuna no meio quando outro thread consultando aquela chave não obteria nenhuma pista ( Setnão; a troca é tipicamente atômica); como tal, embora Settenha o mesmo resultado final que Remove+ Add, a diferença de mecanismo é importante, pois pode afetar outros chamadores.

Por exemplo de Adicionar :

Valor de retorno

Tipo: System.Boolean true se a inserção for bem-sucedida ou false se já houver uma entrada no cache que tenha a mesma chave que a chave.

Marc Gravell
fonte
1
Será que setsubstitui Política se o item existe?
TS
1
Acabei de ver sua mensagem de quase um ano, estou trabalhando em um problema semelhante. Todas as sobrecargas do SET requerem uma Política, então a resposta é sim.
user2223142