Sobes.tech
Junior — Middle

Jak można zaktualizować zawartość usługi cache?

sobes.tech AI

Odpowiedź od AI

Aktualizacja zawartości usługi cache w Go zazwyczaj odbywa się na kilka sposobów:

  1. Bezpośrednia aktualizacja wartości po kluczu — jeśli cache jest reprezentowany jako mapa lub specjalizowana struktura, można po prostu zastąpić wartość pod kluczem.

  2. Użycie TTL (Time To Live) — cache automatycznie się odświeża po wygaśnięciu czasu życia wpisu.

  3. Mechanizm unieważniania — przy zmianie danych w źródle, cache jest oznaczany jako nieaktualny i odświeżany przy następnym żądaniu.

  4. Odświeżanie w tle (refresh) — uruchamiana jest okresowo gorutyna, która odświeża cache zgodnie z harmonogramem.

Przykład prostego odświeżania cache z użyciem mapy i mutexa dla bezpieczeństwa wątków:

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
}

W ten sposób aktualizacja odbywa się za pomocą metody Update, która bezpiecznie zastępuje zawartość po kluczu.