LRU (Least Recently Used) кэш удаляет элемент, который не использовался дольше всего, когда кэш достигает своей емкости. Классический дизайн объединяет hash map (O(1) поиск) с двусвязным списком (O(1) переупорядочивание), обеспечивая O(1) для get и put.
Дизайн с двумя структурами
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)
