Цивільно-імперські послуги; структурне будівництво
Практичний посібник з реалізації Least Нещодавно використовується (lru) політики заміни кешу
Table of Contents
Впровадження політики заміни кешу 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)
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````