Зачем нужен Cache

«Зачем нужен Cache» — вопрос из категории Архитектура, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Кэш нужен для ускорения доступа к часто используемым данным, уменьшая нагрузку на основное хранилище (БД, API и т.д.). Он хранит копии данных в быстродоступном месте (RAM, SSD), сокращая время ответа.

Пример кэша в Go с sync.Map:

var cache sync.Map

func GetUser(id string) (*User, error) {
    if val, ok := cache.Load(id); ok {
        return val.(*User), nil
    }
    user, err := fetchFromDB(id)
    if err != nil {
        return nil, err
    }
    cache.Store(id, user)
    return user, nil
}

Основные причины использовать кэш:

  • Уменьшение latency
  • Снижение нагрузки на БД
  • Повышение отказоустойчивости (буферизация при сбоях)
  • Экономия ресурсов (меньше запросов к медленным источникам)

Но важно учитывать инвалидацию кэша и согласованность данных.