Khi trong memcache bộ nhớ có sẵn đầy, memcache sử dụng thuật toán LRU (được sử dụng gần đây nhất) để giải phóng bộ nhớ. Câu hỏi của tôi là thuật toán LRU thay vì xóa các mục đã không được sử dụng trong một khoảng thời gian nào đó (sử dụng gần đây nhất) so với các mục đã hết hạn? Các mục nhập hết hạn sẽ không bị xóa vào thời điểm chính xác đó nhưng khi lần tiếp theo ai đó cố gắng truy cập vào nó (AFAIR). Vậy thuật toán LRU (cũng) sẽ hết hạn cho các khóa?Liệu LRU có xóa các mục đã không được sử dụng trong một khoảng thời gian không?
Trả lời
Để hiểu cách ghi nhớ LRU, bạn phải đi sâu hơn và hiểu cách lưu trữ các mục lưu trữ. Các mục được lưu trữ tùy thuộc vào kích thước của chúng, chỉ cần đặt tất cả các mục của bạn cho phép nói 100k được lưu trữ trong cùng một bản, trong khi các mục khác 200k được lưu trữ trong một bản khác nhau.
Khi bộ nhớ đầy và bạn cố gắng lưu trữ một mục 100k, memcached sẽ áp dụng LRU trên tấm đó. Nếu có các khóa hết hạn hoặc không được sử dụng trong bản 200k, chúng vẫn ở đó, trong khi bản 100k chỉ có các phím nóng, một trong số các khóa đó dựa trên thuật toán sẽ bị loại bỏ.
Quay lại câu hỏi của bạn, khi bộ nhớ đầy và bạn cố gắng lưu trữ một mục, memcached sẽ tìm kiếm đầu tiên cho các mục đã hết hạn trong bản bạn đang cố viết, sau đó tìm các mục được sử dụng ít nhất. Vì vậy, có, nó sẽ đưa vào tài khoản hết hạn của các phím, hoặc tốt hơn, hết hạn các phím đi trước khi LRU.
Ngoài ra, khi bạn cố gắng nhận một món hàng đã quá ngày hết hạn, mục đó sẽ bị gỡ bỏ và bộ nhớ được khai hoang.
tin chi tiết về (rất nhiều trên google để phân bổ bộ nhớ memcached điều này giải thích LRU là tốt, rất nhiều chuyện để đọc về vấn đề này):
http://returnfoo.com/2012/02/memcached-memory-allocation-and-optimization-2/
http://www.adayinthelifeof.nl/2011/02/06/memcache-internals/
Và một công cụ thực sự tốt đẹp mà tôi giới thiệu về mọi chủ đề được ghi nhớ:
http://code.google.com/p/phpmemcacheadmin/
Hy vọng nó sẽ giúp!
Từ những gì tôi biết tuyên bố này là không đúng sự thật.
"Quay lại câu hỏi của bạn, khi bộ nhớ đầy và bạn cố gắng lưu trữ một mục, memcached sẽ nhìn đầu tiên cho các mục đã hết hạn trong bản bạn đang cố viết, sau đó tìm các mục được sử dụng ít nhất. vâng, nó có tính đến thời điểm hết hạn của các phím, hoặc tốt hơn, các khóa hết hạn sẽ đi trước trước LRU. "
Memcache sẽ loại bỏ mục theo LRU (nó không quan trọng nếu nó có bất kỳ mục hết hạn miễn là chúng được sử dụng gần đây hơn một khóa khác (thậm chí hợp lệ)).
Đã thử nghiệm một thời gian trước trên Memcache 1.4.4.
- 1. Sử dụng một khoảng thời gian thay đổi trong một khoảng thời gian trong Postgres
- 2. MongoDB có sử dụng lại không gian đã xóa không?
- 3. Không gian bị chiếm bởi các hàng đã xóa có được tái sử dụng không?
- 4. Xóa một mục trong Bộ nhớ cục bộ HTML5 sau một khoảng thời gian?
- 5. Khoảng thời gian trong mục tiêu C
- 6. Tách một khoảng thời gian thành nhiều khoảng thời gian
- 7. Thuật toán cây khoảng thời gian hỗ trợ kết hợp các khoảng thời gian không có chồng chéo
- 8. Cách xóa khoảng thời gian trong một chuỗi bằng cách sử dụng jQuery
- 9. Số có giảm theo khoảng thời gian trong Clojure không?
- 10. DatagridView: Xóa không gian không sử dụng?
- 11. Liệu jQuery .remove() có xóa javascript đã nạp khi nó được sử dụng để xóa một thẻ script không?
- 12. Khi nào sử dụng dấu ngoặc và thời điểm sử dụng khoảng thời gian trong Mục tiêu-C
- 13. Kiểm tra xem ứng dụng có rảnh trong một khoảng thời gian không và khóa nó
- 14. Xây dựng tập dữ liệu khoảng thời gian cố định từ tập dữ liệu khoảng thời gian ngẫu nhiên sử dụng dữ liệu cũ
- 15. Khi nào một khoảng thời gian sẽ được sử dụng sau $ trong jQuery?
- 16. Sử dụng get_success_url trên một Xóa khi dữ liệu có liên quan đã bị xóa
- 17. Highstock - khoảng thời gian không thường xuyên
- 18. Cách đếm số lượng người dùng đồng thời sử dụng dữ liệu khoảng thời gian?
- 19. Xóa các hàng khỏi dữ liệu: khoảng thời gian chồng chéo?
- 20. Khoảng thời gian thực Scala, Khoảng thời gian Int
- 21. Bạn có kết thúc tin nhắn ngoại lệ của mình trong một khoảng thời gian không?
- 22. display none Liệu nó có giảm thời gian tải hay các mục vẫn được tải nhưng không được hiển thị
- 23. Có ai đã sử dụng thành công dấu thời gian chữ ký trong một applet java không?
- 24. Chồng chéo khoảng thời gian tối đa bằng cách sử dụng một cây khoảng cách
- 25. Khoảng thời gian LocalDate trong thời gian Joda
- 26. Làm cách nào để nhanh chóng nhóm cột thời gian trong một khung dữ liệu thành các khoảng thời gian?
- 27. Dispose() hoặc Finalize() có được sử dụng để xóa các tệp tạm thời không?
- 28. JS - Cách xóa khoảng thời gian sau khi sử dụng setInterval()
- 29. ứng dụng web hoạt động chậm khi không sử dụng trong một thời gian
- 30. thay thế tất cả các ngắt dòng không phải trước một khoảng thời gian có cụm từ thông dụng?
cảm ơn bạn rất nhiều, đó thực sự là câu trả lời tôi đang tìm kiếm! cảm ơn vì các tài nguyên bổ sung! – zaphod1984
Oh người đàn ông, cảm ơn cho công cụ đó !! – ahskaus