Voltar
Cache
Chave/valor com TTL, em dois modos: memória (padrão) ou Redis, compartilhado
entre réplicas. Ativado via CACHE_ENABLED=true.
CACHE_ENABLED=true
CACHE_DRIVER=memory # memory | redis
CACHE_ADDR=127.0.0.1:6379 # só com CACHE_DRIVER=redis
CACHE_PASSWORD= # AUTH do redis; vazio = sem senha
Se a conexão Redis falhar no boot, o bootstrap cai para cache em memória
(não compartilhado entre réplicas) e loga um aviso, em vez de recusar
subir. Diferença de comportamento entre os dois modos: em memória, o
valor original volta exatamente como foi salvo (mesmo tipo Go); em Redis,
o valor passa por json.Marshal/Unmarshal — um struct salvo com Set
volta de Get como map[string]any, não no tipo original. Prefira tipos
simples (string, número, slice, map) no modo Redis, ou decodifique você
mesmo com sua própria struct-alvo a partir do map retornado.
// Guardar
fw.Cache.Set("posts:lista", posts, 5*time.Minute)
// Recuperar
if v, ok := fw.Cache.Get("posts:lista"); ok {
posts := v.([]*models.Post)
}
// Remover
fw.Cache.Delete("posts:lista")
Padrão recomendado de uso em view:
func ListaView(ctx *router.Context) {
const cacheKey = "posts:lista"
if v, ok := fw.Cache.Get(cacheKey); ok {
render.For("blog").Render(ctx, "lista.html", map[string]any{
"posts": v,
})
return
}
posts, _ := models.ListarPublicados(fw.DB.Use())
fw.Cache.Set(cacheKey, posts, 2*time.Minute)
render.For("blog").Render(ctx, "lista.html", map[string]any{
"posts": posts,
})
}