Кэширование для уменьшения задержек при удалённом доступе к хранилищу
Условие задачи
Есть интерфейс для работы с key-value хранилищем, который реализован удалённо — реализация расположена в Америке, тогда как интерфейс используется в Европе. Из-за большого сетевого расстояния возникает существенная задержка при каждом обращении к базе данных. Чтобы сократить время отклика, необходимо внедрить механизм кэширования. Для этого нужно использовать паттерн "Декоратор", который позволит обернуть оригинальную реализацию интерфейса и скрыть внутри неё слой локального кэша
gotype 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) {
// ...
}