shad-go/lrucache/README.md

24 lines
1.3 KiB
Markdown
Raw Permalink Normal View History

## 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.go) задан интерфейс `Cache` с подробным описанием всех методов.
Нужно написать реализацию и конструктор, принимающий размер кэша:
```
func New(cap int) Cache
```
## Замечания
- При создании хеш-таблицы в go можно указывать capacity.
- Алгоритм LRU описан на [wiki](https://en.wikipedia.org/wiki/Cache_replacement_policies#Least_recently_used_(LRU))
- Для списка можно использовать [container/list](https://golang.org/pkg/container/list/)