Intern — Junior
Használtál cache mechanizmust a projektjeidben?
sobes.tech MI
Válasz az MI-től
Igen, a Go projektekben gyakran használnak cache-t a teljesítmény növelése és a külső erőforrásokra nehezedő terhelés csökkentése érdekében.
Például beépített adatszerkezeteket, például mapokat lehet használni egyszerű memória alapú cache-ként, vagy külső könyvtárakat, például a golang-lru vagy a groupcache.
Egyszerű cache példa map és mutex használatával a szálbiztonság érdekében:
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("Cache értéke:", val)
} else {
fmt.Println("Érték nem található a cache-ben")
}
}
Ez a megközelítés segít gyorsan visszaadni a gyakran kért adatokat anélkül, hogy ismételten számításokat végezne vagy adatbázishívásokat hajtana végre.