Sobes.tech
Junior — Middle

Come si può aggiornare il contenuto del servizio di cache?

sobes.tech AI

Risposta dell'AI

L'aggiornamento del contenuto del servizio di cache in Go avviene generalmente attraverso diversi approcci:

  1. Aggiornamento diretto del valore per chiave — se la cache è rappresentata come una mappa o una struttura specializzata, è possibile semplicemente sostituire il valore associato alla chiave.

  2. Utilizzo di TTL (Time To Live) — la cache si aggiorna automaticamente dopo la scadenza del tempo di vita dell'elemento.

  3. Meccanismo di invalidazione — quando i dati nella fonte vengono modificati, la cache viene contrassegnata come obsoleta e aggiornata alla richiesta successiva.

  4. Aggiornamento in background (refresh) — viene avviata periodicamente una goroutine che aggiorna la cache secondo un programma.

Esempio di un semplice aggiornamento della cache usando una mappa e mutex per la sicurezza concorrente:

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
}

In questo modo, l'aggiornamento avviene tramite il metodo Update, che sostituisce in modo sicuro il contenuto per chiave.