Một LRU (Least Recently Used) cache loại bỏ phần tử chưa được truy cập lâu nhất khi đạt đến dung lượng. Thiết kế kinh điển kết hợp một hash map (tra cứu O(1)) với một doubly linked list (sắp xếp lại O(1)), cho get và put O(1).
Thiết kế hai-cấu-trúc
HashMap: key -> node DLL (thứ tự gần đây):
MRU <-> ... <-> LRU
get/put: map tìm node chuyển node vừa chạm lên đầu (MRU)
trong O(1); DLL nối nó loại bỏ tail (LRU) khi đầy
lên đầu trong O(1)
