Sobes.tech
Junior — Middle

Ako možno aktualizovať obsah cache služby?

sobes.tech AI

Odpoveď od AI

Aktualizácia obsahu cache služby v Go zvyčajne prebieha niekoľkými spôsobmi:

  1. Priama aktualizácia hodnoty podľa kľúča — ak je cache reprezentovaná ako mapa alebo špecializovaná štruktúra, hodnotu je možné jednoducho nahradiť podľa kľúča.

  2. Použitie TTL (Time To Live) — cache sa automaticky aktualizuje po uplynutí doby platnosti záznamu.

  3. Invalidačný mechanizmus — pri zmene dát v zdroji je cache označená ako zastaraná a aktualizuje sa pri nasledujúcom dopyte.

  4. Pozadie aktualizácie (refresh) — periodicky sa spúšťa gorutina, ktorá aktualizuje cache podľa plánu.

Príklad jednoduchého aktualizovania cache pomocou mapy a mutexu pre bezpečnosť v prostredí s viacerými vláknami:

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 spôsobom sa aktualizácia vykonáva cez metódu Update, ktorá bezpečne nahrádza obsah podľa kľúča.