2011-02-10 35 views
8

Nếu một mục trong memcached được đặt thành không bao giờ hết hạn, nó có được miễn trừ khỏi việc loại bỏ LRU không?LRU được ghi nhớ và hết hạn

Các tài liệu mà tôi đã thấy không vẽ một bức tranh rõ ràng như được ưu tiên. Trong tâm trí của tôi, nó sẽ là lý tưởng (có lẽ rất phức tạp trong nội bộ) để có LRU chỉ áp dụng cho các mặt hàng đã hết hạn> 0.

Trả lời

16

Không, nó không được miễn trừ. Memcached là một bộ nhớ cache, không lưu trữ lâu dài. Bất kỳ mục nào bên trong nó, hoặc toàn bộ bộ nhớ cache có thể biến mất bất cứ lúc nào (nhưng không có khả năng trừ khi nó đầy hoặc có vấn đề lớn).

Dưới áp lực bộ nhớ lớn, thuật toán LRU sẽ xóa mọi thứ bạn cần.

Bộ nhớ cache của memcached là gì?

Cấu trúc bộ nhớ cache là LRU (Ít nhất được sử dụng gần đây nhất), cộng với thời gian chờ hết hạn. Khi bạn lưu trữ các mục vào memcached, bạn có thể nhà nước bao lâu nó nên được hợp lệ trong bộ nhớ cache. Đó là mãi mãi, hoặc một thời gian trong tương lai. Nếu máy chủ hết bộ nhớ, các bản đã hết hạn được thay thế trước, sau đó tấm chưa sử dụng lâu đời nhất sẽ tiếp theo.

Nếu hệ thống không có vùng dữ liệu hết hạn, nó sẽ vứt bỏ khối (bộ nhớ) được sử dụng gần đây nhất.

+0

Chỉ cần lưu ý, tôi nhận ra memcached là không liên tục, nhưng có những giải pháp lưu trữ khác trên đó sẽ miễn các mục từ LRU hoặc LFU đuổi. – Mark

3

doc cho biết khi expirezero_does_not_evict được đặt thành 'true', các mục có 0 giờ không thể gỡ bỏ.