Repolode
allegro

allegro/bigcache

Быстрый конкурентный in-memory кэш с вытеснением для Go: хранит множество записей в куче и снижает нагрузку на GC.

Звёзды
8,172
Форки
620
Открытые issues
101
Последний коммит
12 дней назад

Что это?

BigCache — библиотека in-memory-кэша для Go, рассчитанная на хранение большого числа записей без замедления программы сборщиком мусора. Записи хранятся в куче в виде срезов байтов, которые GC не сканирует по отдельности, поэтому в большинстве случаев значения перед сохранением сериализуют в байты.

Для параллельного доступа кэш разделён на шарды и вытесняет записи по истечении настраиваемого LifeWindow; CleanWindow задаёт частоту удаления просроченных записей. Память можно заранее выделить с учётом ожидаемой нагрузки или позволить ей расти; также доступно ограничение HardMaxCacheSize в МБ. При удалении записей из-за истечения срока хранения, нехватки места или явного удаления можно вызывать обработчики.

Для работы проекта требуется Go 1.12 или новее. В него также входит отдельный пакет HTTP-сервера, построенного на базе кэша. Коллизии хешей не обрабатываются: новая запись с тем же хешем перезаписывает существующую.

Ключевые возможности

  • 01Хранит записи в куче в виде срезов байтов, сокращая паузы GC.
  • 02Шардированная архитектура для параллельного чтения и записи.
  • 03Вытеснение по времени с помощью LifeWindow и CleanWindow.
  • 04Необязательное жёсткое ограничение памяти через HardMaxCacheSize.
  • 05Обработчики удаления при истечении срока хранения, переполнении и явном удалении.
  • 06В комплект входит пакет HTTP-сервера, построенного на базе кэша.

Сценарии использования

  • Кэширование гигабайтов сериализованных данных в долго работающем сервисе на Go.
  • Снижение нагрузки на GC в сервисах с миллионами записей в кэше.
  • Создание локального внутрипроцессного кэша с удалением записей по истечении срока хранения.

Быстрый старт

  1. 1

    Добавьте модуль BigCache v3 в проект на Go

  2. 2

    Создайте кэш с конфигурацией по умолчанию (срок жизни — 10 минут)

  3. 3

    Сохраняйте и получайте записи в виде срезов байтов

Что важно знать

  • Записи необходимо сериализовать в срезы байтов, поэтому для большинства сценариев использования потребуется дополнительный код сериализации и десериализации.
  • BigCache не обрабатывает коллизии хешей: при коллизии новый элемент перезаписывает существующее значение.

Темы

Частые вопросы

Что такое bigcache?
Быстрый конкурентный in-memory кэш с вытеснением для Go: хранит множество записей в куче и снижает нагрузку на GC. BigCache — библиотека in-memory-кэша для Go, рассчитанная на хранение большого числа записей без замедления программы сборщиком мусора. Записи хранятся в куче в виде срезов байтов, которые GC не сканирует по отдельности, поэтому в большинстве случаев значения перед сохранением сериализуют в байты.
bigcache можно использовать бесплатно? Какая у него лицензия?
bigcache распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
bigcache всё ещё поддерживается?
Активно поддерживается. Последний коммит в bigcache — 12 окт. 2026 г..
Для чего можно использовать bigcache?
Кэширование гигабайтов сериализованных данных в долго работающем сервисе на Go. Снижение нагрузки на GC в сервисах с миллионами записей в кэше. Создание локального внутрипроцессного кэша с удалением записей по истечении срока хранения.
Как установить bigcache?
Добавьте модуль BigCache v3 в проект на Go Создайте кэш с конфигурацией по умолчанию (срок жизни — 10 минут) Сохраняйте и получайте записи в виде срезов байтов
Где скачать bigcache?
Исходный код и инструкции по установке — на GitHub: https://github.com/allegro/bigcache

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты