Cache
O pacote cacheDB serializa valores em JSON e usa Redis como armazenamento.
Configurar e inicializar
CACHE_URI=localhost:6379
CACHE_PASSWORD=
colibri.InitializeApp()
cacheDB.Initialize()
Criar um cache
userCache := cacheDB.NewCache[User]("user-"+userID, 15*time.Minute)
A chave efetiva é prefixada com APP_NAME:
my-service::user-123
Armazenar e recuperar
if err := userCache.Set(ctx, user); err != nil {
return err
}
cachedUser, err := userCache.One(ctx)
if err != nil {
return nil, err
}
Para listas:
usersCache := cacheDB.NewCache[User]("active-users", 5*time.Minute)
_ = usersCache.Set(ctx, users)
cachedUsers, err := usersCache.Many(ctx)
Para invalidar:
err := userCache.Del(ctx)
Integração SQL
sqlDB.NewCachedQuery procura o valor no cache, consulta o banco quando necessário e armazena o resultado:
user, err := sqlDB.NewCachedQuery[User](
ctx,
userCache,
"SELECT id, name FROM users WHERE id = $1",
userID,
).One()
Tratamento de falhas
- Um cache não inicializado retorna erro.
- Falhas de leitura em
NewCachedQueryprovocam fallback para o banco. - Defina TTL de acordo com a tolerância a dados desatualizados.
- Invalide ou atualize a chave depois de alterações no registro original.
dica
Não use o cache como fonte primária. Seu serviço deve continuar correto quando a chave expirar ou o Redis estiver indisponível.