Sobes.tech
Middle — Senior
66

Потокобезопасный кеш в памяти с временем жизни и автоочисткой

Условие задачи

Необходимо создать потокобезопасный in‑memory кеш, реализующий интерфейс Cacher. Кеш должен хранить элементы с заданным временем жизни (TTL) и самостоятельно удалять просроченные записи посредством сборки мусора. Требуется поддержка следующих операций:

  • Set(key string, value any) — добавить или обновить значение по ключу.
  • Get(k string) (any, bool) — получить значение, проверив, не истёк ли его TTL.
type Cacher interface {
    Set(key string, value any)
    Get(k string) (any, bool)
}

func NewCacher(duration time.Duration) Cacher {
    
}