Een LRU (Least Recently Used) cache verwijdert het item dat het langst niet is geopend wanneer de capaciteit wordt bereikt. Het klassieke ontwerp combineert een hash map (O(1) opzoeken) met een doubly linked list (O(1) herordenen), wat O(1) get en put oplevert.
De ontwerp met twee structuren
HashMap: key -> node DLL (recency order):
MRU <-> ... <-> LRU
get/put: map finds node move touched node to front (MRU)
in O(1); DLL splices it evict the tail (LRU) when full
to the front in O(1)
