Sobes.tech
Junior — Middle

Կարող եք տալ օրինակներ այն ալգորիթմների մասին, որոնք օգտագործվում են տվյալների թարմացման ժամանակ կեշում?

sobes.tech AI

Պատասխան AI-ից

Երբ տվյալները թարմացվում են կեշում, հաճախ կիրառվում են հետևյալ ալգորիթմները:

  • Write-through: տվյալները միաժամանակ գրանցվում են ինչպես կեշում, այնպես էլ հիմնական պահեստում:
  • Write-back (Write-behind): տվյալները նախ գրանցվում են կեշում, իսկ հիմնական պահեստում թարմացումը կատարվում է ավելի ուշ:
  • Կեշի անվավերացում: երբ տվյալները փոխվում են հիմնական պահեստում, կեշը նշվում է որպես հնացած և թարմացվում է հաջորդ հարցում:
  • Time-to-live (TTL): կեշը ավտոմատ կերպով թարմացվում կամ ջնջվում է նշված ժամանակի անցնելուց հետո:

Go-ում TTL կեշի թարմացման օրինակ:

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