Sobes.tech
Junior — Middle

Jaké metody cachování preferujete používat ve svých projektech a proč?

sobes.tech AI

Odpověď od AI

V Go se často používají následující přístupy k ukládání do mezipaměti:

  • Vestavěné datové struktury s synchronizací: například map s sync.RWMutex pro bezpečný přístup ve vícevláknovém prostředí.
  • Knihovní balíčky třetích stran: například golang-lru pro implementaci LRU cache, která automaticky odstraňuje nejméně používané prvky.
  • sync.Map: bezpečná mapa z knihovny standardu, vhodná pro cache s vysokou konkurencí.

Preferované řešení závisí na úkolu:

  • Pro jednoduchou cache s kontrolou přístupu — map + sync.RWMutex.
  • Pro cache s omezením velikosti a automatickým odstraňováním — LRU cache z knihoven třetích stran.
  • Pro vysokovýkonné případy s častým čtením a vzácným zápisem — sync.Map.

Příklad jednoduché 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 přístup je jednoduchý a efektivní ve většině případů.