Intern — Junior
Използвал ли си механизъм за кеширане в проектите си?
sobes.tech AI
Отговор от AI
Да, в проектите на Go често се използва кеширане за подобряване на производителността и намаляване на натоварването върху външните ресурси.
Например, може да се използват вградени структури от данни като map за прост кеш в паметта, или външни библиотеки като golang-lru или groupcache.
Пример за прост кеш, използващ map и mutex за безопасност при работа с множество нишки:
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("Кеширана стойност:", val)
} else {
fmt.Println("Стойността не е намерена в кеша")
}
}
Този подход помага бързо да се връщат често исканите данни без повторни изчисления или заявки към базата данни.