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:
-
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.
-
Použitie TTL (Time To Live) — cache sa automaticky aktualizuje po uplynutí doby platnosti záznamu.
-
Invalidačný mechanizmus — pri zmene dát v zdroji je cache označená ako zastaraná a aktualizuje sa pri nasledujúcom dopyte.
-
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.