Назад к задачам
Junior — Senior
12

Локальный кэш для снижения латентности при работе с удалённым key‑value хранилищем

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В системе используется интерфейс для доступа к key‑value базе, размещённой в США, тогда как клиентская часть работает в Европе. Большое географическое расстояние приводит к заметным задержкам при каждом запросе к базе. Чтобы ускорить отклик, требуется внедрить слой кэширования. Для этого следует применить паттерн «Декоратор», который обернёт оригинальную реализацию интерфейса и будет скрывать внутри себя локальный кэш.

type KVDatabase interface {
  Get(string) (string, error)
  GetKeys() ([]string, error)
}

type RedisDatabase struct {
  // ...
}

func (d *RedisDatabase) Get(key string) (string, error) {
  // ...
}

func (d *RedisDatabase) GetKeys() ([]string, error) {
  // ...
}