Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
12
Локальный кэш для снижения латентности при работе с удалённым key‑value хранилищем
Условие задачи
В системе используется интерфейс для доступа к 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) {
// ...
}