Cache-Aside: приложение читает кеш; при промахе читает БД, кладет в кеш, возвращает. Запись - в БД, затем инвалидация или обновление кеша. Write-Through: запись идет в кеш, кеш сам пишет в БД (или слой кеша синхронно обновляет БД). В Go Cache-Aside реализуют в сервисном слое; Write-Through - обертка над репозиторием с синхронной записью в кеш и БД.
v, err := c.Get(ctx, key)
if err == nil { return v, nil }
v, err = repo.Get(ctx, id)
if err != nil { return nil, err }
c.Set(ctx, key, v, ttl)
return v, nil