Jak lze aktualizovat obsah cache služby?
sobes.tech AI
Odpověď od AI
Aktualizace obsahu cache služby v Go obvykle probíhá několika způsoby:
-
Přímá aktualizace hodnoty podle klíče — pokud je cache reprezentována jako mapa nebo specializovaná struktura, lze hodnotu jednoduše nahradit podle klíče.
-
Použití TTL (Time To Live) — cache se automaticky aktualizuje po vypršení doby života záznamu.
-
Invalidační mechanismus — při změně dat v zdroji je cache označena jako zastaralá a aktualizuje se při následujícím požadavku.
-
Pozadí aktualizace (refresh) — periodicky se spouští goroutine, která aktualizuje cache podle plánu.
Příklad jednoduché aktualizace cache s použitím mapy a mutexu pro bezpečnost v více vláknech:
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
}
Tímto způsobem aktualizace probíhá přes metodu Update, která bezpečně nahrazuje obsah podle klíče.