Sobes.tech
Junior — Middle

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:

  1. 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.

  2. Použití TTL (Time To Live) — cache se automaticky aktualizuje po vypršení doby života záznamu.

  3. 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.

  4. 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.