Как обновить кэш

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

Ответ

В Go можно обновить кэш разными способами, в зависимости от реализации. Простейший вариант — использовать map с мьютексом для потокобезопасности:

type Cache struct {
    sync.RWMutex
    items map[string]string
}

func (c *Cache) Update(key, value string) {
    c.Lock()
    defer c.Unlock()
    c.items[key] = value
}

Для TTL-кэша можно использовать time.Now() для обновления времени жизни:

type Item struct {
    Value  string
    Expiry time.Time
}

func (c *Cache) UpdateWithTTL(key, value string, ttl time.Duration) {
    c.Lock()
    defer c.Unlock()
    c.items[key] = Item{
        Value:  value,
        Expiry: time.Now().Add(ttl),
    }
}

Для сложных сценариев можно рассмотреть готовые решения, например github.com/patrickmn/go-cache.