Repolode
allegro

allegro/bigcache

Caché en memoria rápida, concurrente y con expulsión para Go, que almacena muchísimas entradas en el heap con poca carga para el GC.

Estrellas
8,172
Forks
620
Issues abiertos
101
Último commit
hace 13 días

¿Qué es?

BigCache es una biblioteca de caché en memoria para Go, diseñada para almacenar una gran cantidad de entradas sin que el garbage collector ralentice el programa. Las entradas se guardan en el heap como slices de bytes que el GC no analiza una por una, por lo que la mayoría de los casos de uso serializan los valores a bytes antes de almacenarlos.

La caché está dividida en shards para permitir el acceso concurrente y expulsa las entradas tras un LifeWindow configurable; CleanWindow controla cada cuánto se eliminan las entradas vencidas. La memoria se puede reservar por adelantado según la carga prevista o dejar que crezca, con un límite opcional HardMaxCacheSize en MB. Hay callbacks opcionales que se ejecutan cuando se eliminan entradas por vencimiento, límites de espacio o eliminación explícita.

El proyecto requiere Go 1.12 o posterior e incluye un paquete independiente de servidor HTTP basado en la caché. No se gestionan las colisiones de hash: un elemento nuevo con el mismo hash sobrescribe al existente.

Funciones clave

  • 01Almacena las entradas como slices de bytes en el heap para reducir las pausas del GC.
  • 02Diseño dividido en shards para lecturas y escrituras concurrentes.
  • 03Expulsión basada en el tiempo mediante LifeWindow y CleanWindow.
  • 04Límite máximo de memoria opcional mediante HardMaxCacheSize.
  • 05Callbacks al eliminar entradas por vencimiento, exceso de capacidad o eliminación explícita.
  • 06Incluye un paquete de servidor HTTP basado en la caché.

Casos de uso

  • Almacenar en caché gigabytes de datos serializados en un servicio Go de larga duración.
  • Reducir la carga del GC en servicios que mantienen millones de entradas en caché.
  • Ofrecer una caché local en proceso con vencimiento basado en el tiempo.

Inicio rápido

  1. 1

    Añade el módulo BigCache v3 a tu proyecto de Go

  2. 2

    Crea una caché con la configuración predeterminada (ventana de vida de 10 minutos)

  3. 3

    Guarda y obtén entradas como slices de bytes

Antes de usarlo

  • Las entradas deben serializarse como slices de bytes, por lo que la mayoría de los casos de uso requieren código adicional de serialización y deserialización.
  • BigCache no gestiona las colisiones de hash; si se produce una colisión, el nuevo elemento sobrescribe el valor existente.

Temas

Preguntas frecuentes

¿Qué es bigcache?
Caché en memoria rápida, concurrente y con expulsión para Go, que almacena muchísimas entradas en el heap con poca carga para el GC. BigCache es una biblioteca de caché en memoria para Go, diseñada para almacenar una gran cantidad de entradas sin que el garbage collector ralentice el programa. Las entradas se guardan en el heap como slices de bytes que el GC no analiza una por una, por lo que la mayoría de los casos de uso serializan los valores a bytes antes de almacenarlos.
¿bigcache es gratuito? ¿Qué licencia tiene?
bigcache es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿bigcache sigue mantenido?
Mantenimiento activo. El último commit de bigcache fue el 12 oct 2026.
¿Para qué puedo usar bigcache?
Almacenar en caché gigabytes de datos serializados en un servicio Go de larga duración. Reducir la carga del GC en servicios que mantienen millones de entradas en caché. Ofrecer una caché local en proceso con vencimiento basado en el tiempo.
¿Cómo se instala bigcache?
Añade el módulo BigCache v3 a tu proyecto de Go Crea una caché con la configuración predeterminada (ventana de vida de 10 minutos) Guarda y obtén entradas como slices de bytes
¿Dónde consigo bigcache?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/allegro/bigcache

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados