Быстрая конкурентная библиотека кеширования для Go с ограничением по памяти, вытеснением по стоимости и допуском записей с помощью TinyLFU.
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
Добавьте модуль BigCache v3 в проект на Go
- 2
Создайте кэш с конфигурацией по умолчанию (срок жизни — 10 минут)
- 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 обновляется ежедневно.
Похожие проекты
JavaScript LRU-кэш, который удаляет давно не использовавшиеся элементы при достижении заданного лимита по количеству, размеру или TTL.
Хранилище данных в памяти для кэширования, работы со структурами данных и документами, векторного поиска и обмена сообщениями.
Библиотека для управления асинхронным состоянием и загрузки данных в веб-приложениях с поддержкой React, Vue, Svelte и Solid.
Система загрузки изображений на Swift для платформ Apple с кэшированием, обработкой, прогрессивным декодированием и компонентами для SwiftUI и UIKit.
HAProxy — бесплатный и быстрый reverse proxy и балансировщик нагрузки для TCP- и HTTP-приложений, обеспечивающий высокую доступность и распределение трафика.