Sobes.tech
Junior — Middle

Μπορείτε να δώσετε παραδείγματα αλγορίθμων που χρησιμοποιούνται κατά την ενημέρωση δεδομένων στην cache;

sobes.tech AI

Απάντηση από AI

Κατά την ενημέρωση δεδομένων στην κρυφή μνήμη, συχνά εφαρμόζονται οι ακόλουθοι αλγόριθμοι:

  • Write-through: τα δεδομένα γράφονται ταυτόχρονα στην κρυφή μνήμη και στην κύρια αποθήκευση.
  • Write-back (Write-behind): τα δεδομένα γράφονται πρώτα στην κρυφή μνήμη, και η ενημέρωση της κύριας αποθήκευσης γίνεται αργότερα.
  • Ακυρώσεις cache: κατά την αλλαγή δεδομένων στην κύρια αποθήκευση, η cache σημειώνεται ως παρωχημένη και ενημερώνεται κατά την επόμενη αίτηση.
  • Time-to-live (TTL): η cache ενημερώνεται ή διαγράφεται αυτόματα μετά την παρέλευση του καθορισμένου χρόνου.

Παράδειγμα σε Go για ενημέρωση TTL cache:

cache := make(map[string]CacheItem)

// CacheItem περιέχει δεδομένα και χρόνο λήξης

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