.. | ||
cache.go | ||
cache_test.go | ||
lru.go | ||
README.md |
lrucache
В этой задаче нужно написать простой Least recently used cache.
LRU cache - это key-value storage фиксированного размера, реализующий операции:
set(k, v)
- обновляет хранимое по ключуk
значение. В случае, если операция приводит к превышению размера кэша, из того удаляется значение по самому "старому" ключу.get(k) -> v, ok
- возвращает значение, хранимое по ключуk
.
Обе функции set
и get
обновляют access time ключа.
В файле cache.go задан интерфейс Cache
с подробным описанием всех методов.
Нужно написать реализацию и конструктор, принимающий размер кэша:
func New(cap int) Cache
Замечания
- При создании хеш-таблицы в go можно указывать capacity.
- Алгоритм LRU описан на wiki
- Для списка можно использовать container/list