Sobes.tech
Back to questions
Junior — Middle
80

Каким образом можно осуществить обновление содержимого кэш-сервиса?

Companies where asked
IDT

Answer from AI

sobes.tech AI

Обновление содержимого кэш-сервиса в Go обычно происходит через несколько подходов:

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

  2. Использование TTL (Time To Live) — кэш автоматически обновляется после истечения времени жизни записи.

  3. Механизм инвалидации — при изменении данных в источнике кэш помечается как устаревший и обновляется при следующем запросе.

  4. Фоновое обновление (refresh) — периодически запускается горутина, которая обновляет кэш по расписанию.

Пример простого обновления кэша с использованием map и mutex для потокобезопасности:

import "sync"

type Cache struct {
    mu    sync.Mutex
    store map[string]string
}

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

func (c *Cache) Get(key string) (string, bool) {
    c.mu.Lock()
    defer c.mu.Unlock()
    val, ok := c.store[key]
    return val, ok
}

Таким образом, обновление происходит через метод Update, который безопасно заменяет содержимое по ключу.