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.,
mapsusync.RWMutexsaugiam 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ų.