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.