Впровадження політики заміни кешу LRU допомагає оптимізувати використання пам'яті шляхом видалення принаймні нещодавно підключених елементів, коли кеш досягає його потужностей. Цей посібник надає практичні кроки для розробки кешу LRU в різних середовищах програмування.

Розуміння кешу LRU

У кеші LRU (Least Нещодавно використовується) є можливість визначити, які дані для полегшення при необхідності. Передбачає нещодавно доступ до елементів, що забезпечують, що часто використовуються дані залишаються доступні.

Основні компоненти кешу LRU

Ефективний кеш LRU зазвичай поєднує в собі два структури даних:

  • Hash Map:] Забезпечує швидкий доступ до елементів кешу.
  • Доублі Linked List: Забезпечує порядок використання виробу, з найостанньою на передній.

Етапи реалізації

Дотримуйтесь цих кроків, щоб реалізувати кеш LRU:

  • Спочатку ви зможете дізнатися про наявність карти і довбутися пов'язаного списку.
  • На доступі даних перемістіть пункт перед списком.
  • Якщо кеш перевищує потужність, видаліть пункт в кінці списку.
  • Оновлення карти хешу відповідно при вставках і видаленні.

Прикладна реалізація на Python

Ось простий приклад кешу LRU на Python:

Note: Цей код використовує модуль колекції для замовленняDict, який спрощує виконання.

``````````python'`````````````python'`````````````````````````````````python'```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````

з колекції імпорт ЗамовленийДикт

клас LRUCache:

def init (самість, ємність):

.cache = Замовлення

само.місткість = потужність

def get(self, ключ):

якщо ключ не в само.cache:

Повернення -1

.cache.move to end(ключа)

...............................................................................................................................................................................................................................................................

def покласти(сама, ключ, значення):

.cache[key] = значення

.cache.move to end(ключа)

якщо len(self.cache) > само.capacity:

.cache.popitem(last=False)

```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````