Memcached cung cấp tùy chọn thời gian hết hạn bộ nhớ cache, chỉ định khoảng thời gian các đối tượng được giữ lại trong bộ nhớ cache. Giả sử tất cả các ghi là thông qua bộ nhớ cache Tôi không hiểu tại sao người ta lại muốn xóa một đối tượng khỏi bộ nhớ cache. Nói cách khác, nếu tất cả các hoạt động ghi cập nhật bộ nhớ cache trước DB, thì bộ nhớ cache không bao giờ có thể chứa một đối tượng cũ, vậy tại sao lại xóa nó?Thời gian hết hạn ghi nhớ
Một đối số có thể là bộ nhớ cache sẽ phát triển vô thời hạn nếu các đối tượng không bao giờ bị xóa, nhưng memcached cho phép bạn chỉ định kích thước tối đa. Khi đạt đến kích thước này, memcached sử dụng thuật toán (LRU) ít được sử dụng gần đây nhất để xác định các mục cần xóa. Tóm lại, nếu một kích thước tối đa hợp lý đã được cấu hình, và tất cả các ghi được thông qua bộ nhớ cache, tại sao bạn muốn hết hạn các đối tượng sau một khoảng thời gian nhất định?
Cảm ơn, Don
Tôi đã đọc các tuyên bố rằng đôi khi các phím chưa hết hạn có thể thực sự bị xóa khỏi bộ nhớ cache trước các khóa đã hết hạn - đây là một sự hy sinh được thực hiện để giữ thuật toán tẩy sạch bộ nhớ cache LRU hiệu quả. Nói cách khác, có * không * một sự khác biệt giữa 'Ít nhất được sử dụng gần đây' và 'Không phải là được sử dụng Anymore'. Các khóa hết hạn không thực sự bị xóa khi hết hạn - nhưng chúng * sẽ * bị xóa trong lần tiếp theo yêu cầu nhận được gửi đến chúng. Vì vậy, trong ngắn hạn, thiết lập expirations không thực sự nhất thiết phải giúp "để lại nhiều phòng" cho các phím không hết hạn. –