Sobes.tech
Junior — Middle

Ինչպե՞ս կարելի է կատարել կեշ-ծառայության բովանդակության թարմացում։

sobes.tech AI

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

Go- ում կեշ ծառայության բովանդակության թարմացումը սովորաբար կատարվում է մի քանի մոտեցումներով՝

  1. Ուղիղ արժեքի թարմացում ըստ բանալիի — եթե կեշը ներկայացված է որպես քարտեզ կամ մասնագիտացված կառուցվածք, ապա պարզապես կարող եք փոխարինել արժեքը ըստ բանալիի:

  2. TTL (Time To Live) օգտագործում — կեշը ավտոմատ կերպով թարմացվում է գրառման կյանքի ժամկետի ավարտից հետո:

  3. Անվավերացման մեխանիզմ — երբ տվյալները փոփոխվում են աղբյուրում, կեշը նշվում է որպես հնացած և թարմացվում է հաջորդ հարցում:

  4. Հետևի ֆոնային թարմացում (refresh) — ժամանակ առ ժամանակ սկսվում է goroutine, որը թարմացնում է կեշը ըստ ժամանակացույցի:

Օրինակ՝ Map և mutex օգտագործելով պարզ կեշ թարմացման օրինակ՝ բազմաբնույթ անվտանգության համար.

import "sync"

type Cache struct {
    mu    sync.Mutex
    store map[string]string
}

func (c *Cache) Update(key, value string) {
    c.mu.Lock()
    defer c.mu.Unlock()
    c.store[key] = value
}

func (c *Cache) Get(key string) (string, bool) {
    c.mu.Lock()
    defer c.mu.Unlock()
    val, ok := c.store[key]
    return val, ok
}

Այս կերպ թարմացումը կատարվում է Update մեթոդի միջոցով, որը անվտանգ կերպով փոխարինում է բովանդակությունը ըստ բանալիի։