Uma biblioteca de cache rápida, concorrente e limitada por memória para Go, com remoção baseada em custo e admissão TinyLFU.
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
Adicione o módulo BigCache v3 ao seu projeto Go
- 2
Crie um cache com a configuração padrão (janela de vida de 10 minutos)
- 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
Um cache LRU em JavaScript que remove os itens menos usados recentemente ao atingir o limite configurado de quantidade, tamanho ou TTL.
Um armazenamento de dados em memória usado como cache, servidor de estruturas de dados, repositório de documentos e vetores e broker de mensagens.
Biblioteca de gerenciamento de estado assíncrono e busca de dados para apps web, com integrações para React, Vue, Svelte e Solid.
Sistema Swift de carregamento de imagens para plataformas Apple, com cache, processamento, decodificação progressiva e componentes para SwiftUI/UIKit.
HAProxy é um proxy reverso e balanceador de carga gratuito e rápido para aplicações TCP e HTTP, que oferece alta disponibilidade e distribuição de tráfego.