Intern — Junior
Použil si v svojich projektoch mechanizmus cache?
sobes.tech AI
Odpoveď od AI
Áno, v projektoch v Go sa často používa kešovanie na zlepšenie výkonu a zníženie záťaže na externých zdrojoch.
Napríklad, môžu sa použiť vstavané dátové štruktúry, ako je map, na jednoduchú cache v pamäti, alebo externé knižnice, ako golang-lru alebo groupcache.
Príklad jednoduchej cache s použitím mapy a mutexu pre bezpečnosť v prostredí s viacerými vláknami:
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("Hodnota v cache:", val)
} else {
fmt.Println("Hodnota nenalezena v cache")
}
}
Tento prístup pomáha rýchlo vracať často požadované údaje bez opakovaných výpočtov alebo volaní do databázy.