Sobes.tech
Junior — Middle

Kaip galima atnaujinti cache paslaugos turinį?

sobes.tech AI

Atsakymas iš AI

Kepso paslaugos turinio atnaujinimas Go dažniausiai vyksta keliais būdais:

  1. Tiesioginis reikšmės atnaujinimas pagal raktą — jei cache yra pateiktas kaip žemėlapis arba specializuota struktūra, reikšmę galima paprastai pakeisti pagal raktą.

  2. TTL (Time To Live) naudojimas — cache automatiškai atnaujinama po įrašo gyvavimo laiko pabaigos.

  3. Invalidacijos mechanizmas — keičiant duomenis šaltinyje, cache pažymima kaip pasenusi ir atnaujinama kitą kartą.

  4. Fono atnaujinimas (refresh) — periodiškai paleidžiama gorutina, kuri atnaujina cache pagal grafiką.

Pavyzdys paprasto cache atnaujinimo naudojant žemėlapį ir mutex, siekiant saugumo keliuose srautuose:

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
}

Taip atnaujinimas vyksta per Update metodą, kuris saugiai pakeičia turinį pagal raktą.