Cum se poate actualiza conținutul serviciului de cache?
sobes.tech AI
Răspuns de la AI
Actualizarea conținutului serviciului de cache în Go are loc de obicei prin mai multe abordări:
-
Actualizarea directă a valorii după cheie — dacă cache-ul este reprezentat sub formă de mapă sau structură specializată, se poate înlocui pur și simplu valoarea după cheie.
-
Utilizarea TTL (Time To Live) — cache-ul se actualizează automat după expirarea duratei de viață a înregistrării.
-
Mecanism de invalidare — la modificarea datelor în sursă, cache-ul este marcat ca învechit și se actualizează la următoarea solicitare.
-
Actualizare în fundal (refresh) — se pornește periodic o gorutină care actualizează cache-ul conform unui program.
Exemplu de actualizare simplă a cache-ului folosind mapă și mutex pentru siguranță în concurență:
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
}
Astfel, actualizarea se face prin metoda Update, care înlocuiește în mod sigur conținutul după cheie.