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