Junior — Middle
Vai vari sniegt piemērus algoritmiem, kas tiek izmantoti datu atjaunināšanā kešatmiņā?
sobes.tech AI
Atbilde no AI
Kad dati tiek atjaunoti kešatmiņā, bieži tiek izmantoti šādi algoritmi:
- Write-through: dati tiek rakstīti vienlaicīgi gan kešatmiņā, gan galvenajā glabātuvē.
- Write-back (Write-behind): dati vispirms tiek rakstīti kešatmiņā, un galvenās glabāšanas atjaunināšana notiek vēlāk.
- Kešatmiņas invalidācija: mainoties datiem galvenajā glabātuvē, kešatmiņa tiek marķēta kā novecojusi un atjaunināta nākamajā pieprasījumā.
- Time-to-live (TTL): kešatmiņa automātiski tiek atjaunināta vai dzēsta pēc noteikta laika beigām.
Piemērs Go valodā TTL kešatmiņas atjaunināšanai:
cache := make(map[string]CacheItem)
// CacheItem satur datus un beigu laiku
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)}
}