Repolode
allegro

allegro/bigcache

Cache em memória rápido e concorrente para Go, com remoção de entradas e baixo impacto no GC, mesmo ao armazenar um grande volume de itens no heap.

Estrelas
8,172
Forks
620
Issues abertas
101
Último commit
há 13 dias

O que é?

BigCache é uma biblioteca de cache em memória para Go, projetada para armazenar um grande volume de entradas sem que o garbage collector deixe o programa lento. As entradas ficam no heap em slices de bytes que o GC não percorre uma a uma; por isso, na maioria dos casos, os valores são serializados em bytes antes de serem armazenados.

O cache é dividido em shards para permitir acesso concorrente e remove entradas após um LifeWindow configurável; um CleanWindow controla a frequência com que as entradas expiradas são removidas. A memória pode ser pré-alocada com base na carga esperada ou crescer conforme necessário, com a opção de limitar o tamanho usando HardMaxCacheSize, em MB. Callbacks opcionais são acionados quando entradas são removidas por expiração, limite de espaço ou exclusão explícita.

O projeto requer Go 1.12 ou posterior e inclui um pacote separado de servidor HTTP baseado no cache. Colisões de hash não são tratadas: um novo item com o mesmo hash sobrescreve o existente.

Recursos principais

  • 01Armazena entradas no heap como slices de bytes para reduzir o tempo de pausa do GC.
  • 02Arquitetura dividida em shards para leituras e gravações concorrentes.
  • 03Remoção de entradas por tempo usando LifeWindow e CleanWindow.
  • 04Limite máximo opcional de memória com HardMaxCacheSize.
  • 05Callbacks de remoção por expiração, falta de espaço ou exclusão.
  • 06Inclui um pacote de servidor HTTP baseado no cache.

Casos de uso

  • Armazenar em cache gigabytes de dados serializados em um serviço Go de longa duração.
  • Reduzir o impacto do GC em serviços que mantêm milhões de entradas em cache.
  • Oferecer um cache local, dentro do processo, com expiração baseada em tempo.

Início rápido

  1. 1

    Adicione o módulo BigCache v3 ao seu projeto Go

  2. 2

    Crie um cache com a configuração padrão (janela de vida de 10 minutos)

  3. 3

    Defina e obtenha entradas como slices de bytes

Antes de usar

  • As entradas precisam ser serializadas como slices de bytes, então a maioria dos casos de uso exige código adicional de serialização e desserialização.
  • O BigCache não trata colisões de hash; quando ocorre uma colisão, o novo item sobrescreve o valor existente.

Tópicos

Perguntas frequentes

O que é bigcache?
Cache em memória rápido e concorrente para Go, com remoção de entradas e baixo impacto no GC, mesmo ao armazenar um grande volume de itens no heap. BigCache é uma biblioteca de cache em memória para Go, projetada para armazenar um grande volume de entradas sem que o garbage collector deixe o programa lento. As entradas ficam no heap em slices de bytes que o GC não percorre uma a uma; por isso, na maioria dos casos, os valores são serializados em bytes antes de serem armazenados.
bigcache é gratuito? Qual é a licença?
bigcache é open source sob a licença Apache-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
bigcache ainda é mantido?
Manutenção ativa. O último commit de bigcache foi em 12 de out. de 2026.
Para que posso usar bigcache?
Armazenar em cache gigabytes de dados serializados em um serviço Go de longa duração. Reduzir o impacto do GC em serviços que mantêm milhões de entradas em cache. Oferecer um cache local, dentro do processo, com expiração baseada em tempo.
Como instalar bigcache?
Adicione o módulo BigCache v3 ao seu projeto Go Crie um cache com a configuração padrão (janela de vida de 10 minutos) Defina e obtenha entradas como slices de bytes
Onde consigo bigcache?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/allegro/bigcache

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados