Sobes.tech
Junior — Middle

Podes dar exemplos de algoritmos utilizados na atualização de dados em cache?

sobes.tech IA

Resposta da IA

Ao atualizar os dados na cache, frequentemente aplicam-se os seguintes algoritmos:

  • Write-through: os dados são escritos simultaneamente na cache e no armazenamento principal.
  • Write-back (Write-behind): os dados são primeiro escritos na cache, e a atualização do armazenamento principal ocorre mais tarde.
  • Invalidation de cache: ao alterar os dados no armazenamento principal, a cache é marcada como desatualizada e atualizada na próxima solicitação.
  • Time-to-live (TTL): a cache é atualizada ou removida automaticamente após o tempo definido expirar.

Exemplo em Go para atualização TTL da cache:

cache := make(map[string]CacheItem)

// CacheItem contém dados e tempo de expiração

type CacheItem struct {
    Data      interface{}
    ExpiresAt time.Time
}

func GetFromCache(key string) (interface{}, bool) {
    item, found := cache[key]
    if !found || time.Now().After(item.ExpiresAt) {
        return nil, false
    }
    return item.Data, true
}

func SetToCache(key string, data interface{}, duration time.Duration) {
    cache[key] = CacheItem{Data: data, ExpiresAt: time.Now().Add(duration)}
}