Apa perbedaan antara MemoryCache.Add dan MemoryCache.Set?

104

Saya membaca dokumentasi MSDN tetapi tidak begitu memahaminya.

Saya percaya bahwa perilaku Setadalah "ganti yang ada, atau tambahkan" (secara atomik).

Apakah itu benar?

Badai
sumber

Jawaban:

173

Addtidak melakukan apa pun (mengembalikan false) jika sudah ada nilai untuk kunci itu. Setmelakukan penyisipan atau pembaruan, jika perlu.

Remove+ Addakan meninggalkan celah di tengah ketika thread lain yang menanyakan kunci itu tidak mendapatkan petunjuk ( Settidak; pertukaran biasanya atom); Oleh karena itu, meskipun Setmemiliki hasil akhir yang sama dengan Remove+ Add, perbedaan mekanisme ini penting karena dapat memengaruhi penelepon lain.

Misalnya Add :

Nilai Kembali

Ketik: System.Boolean benar jika penyisipan berhasil, atau salah jika sudah ada entri di cache yang memiliki kunci yang sama dengan kunci.

Marc Gravell
sumber
1
Apakah setmenggantikan Kebijakan jika item ada?
TS
1
Saya baru saja melihat pesan Anda yang hampir setahun, saya sedang menangani masalah serupa. Semua kelebihan SET memerlukan Kebijakan, jadi jawabannya adalah ya.
pengguna2223142