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?

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.