Sobes.tech
Junior — Middle

Welke caching-methoden gebruik je het liefst in je projecten en waarom?

sobes.tech AI

Antwoord van AI

In Go worden de volgende benaderingen vaak gebruikt voor caching:

  • Ingebouwde datastructuren met synchronisatie: bijvoorbeeld map met sync.RWMutex voor veilige gelijktijdige toegang.
  • Derde partij bibliotheekpakketten: bijvoorbeeld golang-lru voor het implementeren van een LRU-cache die automatisch de minst gebruikte items verwijdert.
  • sync.Map: een gelijktijdige veilige kaart uit de standaardbibliotheek, handig voor caches met hoge competitie.

De voorkeur hangt af van de taak:

  • Voor een eenvoudige cache met toegangscontrole — map + sync.RWMutex.
  • Voor een cache met limiet op grootte en automatische verwijdering — LRU-cache van externe bibliotheken.
  • Voor hoge prestaties met frequente lezingen en zeldzame schrijvingen — sync.Map.

Voorbeeld van een eenvoudige cache met 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
}

Deze aanpak is eenvoudig en effectief voor de meeste gevallen.