Sobes.tech
Junior — Middle

Czy możesz podać przykłady algorytmów używanych podczas aktualizacji danych w pamięci podręcznej?

sobes.tech AI

Odpowiedź od AI

Podczas aktualizacji danych w pamięci podręcznej często stosuje się następujące algorytmy:

  • Write-through: dane są zapisywane jednocześnie w pamięci podręcznej i głównym magazynie danych.
  • Write-back (Write-behind): dane są najpierw zapisywane w pamięci podręcznej, a aktualizacja głównego magazynu danych następuje później.
  • Unieważnianie pamięci podręcznej: przy zmianie danych w głównym magazynie, pamięć podręczna jest oznaczana jako nieaktualna i odświeżana przy następnym żądaniu.
  • Time-to-live (TTL): pamięć podręczna jest automatycznie odświeżana lub usuwana po upływie określonego czasu.

Przykład w Go dla aktualizacji TTL pamięci podręcznej:

cache := make(map[string]CacheItem)

// CacheItem zawiera dane i czas wygaśnięcia

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)}
}