Sobes.tech
Intern — Junior

Heb je caching-mechanismen gebruikt in je projecten?

sobes.tech AI

Antwoord van AI

Ja, in Go-projecten wordt vaak caching gebruikt om de prestaties te verbeteren en de belasting op externe bronnen te verminderen.

Je kunt bijvoorbeeld ingebouwde datastructuren zoals maps gebruiken voor een eenvoudige in-memory cache, of externe bibliotheken zoals golang-lru of groupcache.

Voorbeeld van een eenvoudige cache met gebruik van een map en mutex voor threadveiligheid:

package main

import (
    "fmt"
    "sync"
)

type Cache struct {
    mu    sync.Mutex
    store map[string]string
}

func NewCache() *Cache {
    return &Cache{store: make(map[string]string)}
}

func (c *Cache) Get(key string) (string, bool) {
    c.mu.Lock()
    defer c.mu.Unlock()
    val, ok := c.store[key]
    return val, ok
}

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

func main() {
    cache := NewCache()
    cache.Set("foo", "bar")

    if val, ok := cache.Get("foo"); ok {
        fmt.Println("Gecachte waarde:", val)
    } else {
        fmt.Println("Waarde niet gevonden in cache")
    }
}

Deze aanpak helpt om vaak opgevraagde gegevens snel terug te geven zonder herhaalde berekeningen of database-aanroepen.