Sobes.tech
Junior — Middle

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:

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

  2. Utilizarea TTL (Time To Live) — cache-ul se actualizează automat după expirarea duratei de viață a înregistrării.

  3. Mecanism de invalidare — la modificarea datelor în sursă, cache-ul este marcat ca învechit și se actualizează la următoarea solicitare.

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