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:
-
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.
-
Użycie TTL (Time To Live) — cache automatycznie się odświeża po wygaśnięciu czasu życia wpisu.
-
Mechanizm unieważniania — przy zmianie danych w źródle, cache jest oznaczany jako nieaktualny i odświeżany przy następnym żądaniu.
-
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.