Sự khác biệt giữa MemoryCache.Add và MemoryCache.Set là gì?


104

Tôi đã đọc tài liệu MSDN nhưng không thực sự hiểu nó.

Tôi tin rằng hành vi của Setlà "thay thế hiện có hoặc thêm vào" (về mặt nguyên tử).

Đúng không?

Câu trả lời:


173

Addkhông có gì (trả về false) nếu đã có một giá trị cho khóa đó. Setchèn hoặc cập nhật, nếu cần.

Remove+ Addsẽ để lại một khoảng trống ở giữa khi một luồng khác truy vấn khóa đó sẽ không nhận được manh mối nào ( Setkhông; hoán đổi thường là nguyên tử); như vậy, mặc dù Setcó cùng kết quả cuối cùngRemove+ Add, sự khác biệt về cơ chế rất quan trọng vì nó có thể ảnh hưởng đến những người gọi khác.

Ví dụ về Thêm :

Giá trị trả lại

Nhập: System.Boolean true nếu chèn thành công hoặc false nếu đã có một mục nhập trong bộ nhớ cache có cùng khóa với khóa.


1
setthay thế Chính sách nếu mặt hàng tồn tại?
TS

1
Tôi vừa thấy tin nhắn gần như cũ của bạn, tôi đang giải quyết vấn đề tương tự. Tất cả các quá tải SET đều yêu cầu một Chính sách, vì vậy câu trả lời là có.
user2223142
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.