Sobes.tech
Junior — Middle

Kuidas saab värskendada vahemäluteenuse sisu?

sobes.tech AI

Vastus AI-lt

Go-s olevate vahemälu teenuse sisu uuendamine toimub tavaliselt mitmel viisil:

  1. Otse väärtuse uuendamine võtme järgi — kui vahemälu on esitatud kaardina või spetsialiseeritud struktuurina, saab väärtust lihtsalt asendada võtme järgi.

  2. TTL (Time To Live) kasutamine — vahemälu uuendatakse automaatselt pärast kirje eluea lõppemist.

  3. Kehtetuks tunnistamise mehhanism — andmete muutmisel allikas märgitakse vahemälu vananenuks ja uuendatakse järgmisel päringul.

  4. Taustuuendamine (refresh) — perioodiliselt käivitatakse goroutine, mis uuendab vahemälu vastavalt ajakavale.

Näide lihtsast vahemälu uuendusest, kasutades kaarti ja mutexi, et tagada mitme lõime ohutus:

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
}

Sellise meetodiga toimub uuendus Update meetodi kaudu, mis turvaliselt asendab sisu võtme järgi.