Pular para o conteúdo principal
Versão: v0.2.2

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 NewCachedQuery provocam 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.