Sobes.tech
Junior — Middle

Kokius caching metodus labiausiai mėgstate naudoti savo projektuose ir kodėl?

sobes.tech AI

Atsakymas iš AI

Go dažnai naudojami šie būdai talpykloje:

  • Integruotos duomenų struktūros su sinchronizacija: pvz., map su sync.RWMutex saugiam prieigai kelių gijų aplinkoje.
  • Trečiųjų šalių bibliotekų paketai: pvz., golang-lru įgyvendinti LRU talpyklą, kuri automatiškai pašalina mažiausiai naudojamus elementus.
  • sync.Map: standartinės bibliotekos saugi žemėlapis, tinkamas didelės konkurencijos talpykloms.

Pasirinkimas priklauso nuo užduoties:

  • Paprastam talpyklai su prieigos kontrole — map + sync.RWMutex.
  • Talpyklai su dydžio apribojimu ir automatinio pašalinimo — trečiųjų šalių bibliotekų LRU talpykla.
  • Aukštos našumo atvejams, dažniems skaitymams ir retai rašymams — sync.Map.

Pavyzdys paprastos talpyklos su sync.RWMutex:

 type Cache struct {
    mu sync.RWMutex
    data map[string]interface{}
}

func (c *Cache) Get(key string) (interface{}, bool) {
    c.mu.RLock()
    defer c.mu.RUnlock()
    val, ok := c.data[key]
    return val, ok
}

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

Šis požiūris yra paprastas ir efektyvus daugeliu atvejų.