Intern — Junior
Usaste algum mecanismo de cache nos teus projetos?
sobes.tech IA
Resposta da IA
Sim, nos projetos em Go, muitas vezes é utilizado cache para melhorar o desempenho e reduzir a carga nos recursos externos.
Por exemplo, pode-se usar estruturas de dados integradas, como mapas, para um cache simples na memória, ou bibliotecas externas, como golang-lru ou groupcache.
Exemplo de um cache simples usando um mapa e mutex para segurança em concorrência:
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("Valor em cache:", val)
} else {
fmt.Println("Valor não encontrado no cache")
}
}
Este método ajuda a retornar rapidamente dados frequentemente solicitados sem cálculos repetidos ou chamadas à base de dados.