Un LRU (Least Recently Used) cache desaloja el elemento que no ha sido accedido durante más tiempo cuando alcanza la capacidad. El diseño clásico combina un hash map (búsqueda O(1)) con una lista doblemente vinculada (reordenamiento O(1)), dando O(1) get y put.
El diseño de dos estructuras
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)
