Sobes.tech
Junior — Middle

Aké metódy kešovania preferujete používať vo svojich projektoch a prečo?

sobes.tech AI

Odpoveď od AI

V Go sa často používajú nasledujúce prístupy k cache:

  • Vstavané dátové štruktúry so synchronizáciou: napríklad map s sync.RWMutex pre bezpečný prístup v prostredí s viacerými vláknami.
  • Knižničné balíky tretích strán: napríklad golang-lru na implementáciu LRU cache, ktorá automaticky odstraňuje najmenej používané prvky.
  • sync.Map: bezpečná mapa z knižnice štandardu, vhodná pre cache s vysokou konkurenciou.

Preferencia závisí od úlohy:

  • Pre jednoduchú cache s kontrolou prístupu — map + sync.RWMutex.
  • Pre cache s obmedzením veľkosti a automatickým odstraňovaním — LRU cache z externých knižníc.
  • Pre vysokovýkonné prípady s častým čítaním a zriedkavým zápisom — sync.Map.

Príklad jednoduchého cache s 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
}

Tento prístup je jednoduchý a efektívny vo väčšine prípadov.