Repolode
tidwall

tidwall/pogocache

Низколатентный кэширующий сервер на C с поддержкой протоколов Memcache, Redis/Valkey, HTTP и Postgres, который можно встроить в программу как один C-файл.

Open source альтернатива:RedisMemcached

Звёзды
2,524
Форки
76
Открытые issues
18
Последний коммит
3 месяца назад

Что это?

Pogocache — кэширующий сервер, рассчитанный на низкую задержку и небольшую нагрузку на CPU при обработке запросов. Он принимает подключения по нескольким сетевым протоколам, включая Memcache, Valkey/Redis (RESP), HTTP и Postgres, поэтому к нему можно без изменений подключаться существующими инструментами и библиотеками, например curl, redis-cli и psql.

Pogocache можно также запускать во встроенном режиме. Самодостаточный файл pogocache.c можно напрямую скомпилировать в составе программы на C — тогда приложение сможет вызывать функции кеша, не обращаясь к сети. Возможности сервера включают TLS на отдельном порту, аутентификацию по паролю, настраиваемые ограничения памяти с вытеснением данных, опциональное сохранение в файл и шардированные хеш-таблицы с блокировками для каждого шарда.

Проект предназначен для 64-разрядных Linux и macOS и написан на C. В README приведены таблицы бенчмарков, сравнивающие его с Redis, Valkey, Dragonfly, Garnet и Memcache на одном типе инстанса AWS; результаты получены в собственной тестовой среде автора.

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

  • 01Принимает на одном сервере сетевые протоколы Memcache, RESP (Valkey/Redis), HTTP и Postgres.
  • 02Можно скомпилировать в составе программы на C как один файл для внутрипроцессного кеширования.
  • 03Поддерживает TLS, аутентификацию по паролю и настраиваемый maxmemory с вытеснением данных.
  • 04Предоставляет опциональное сохранение в файл и истечение срока действия ключей по TTL.
  • 05Использует шардированную хеш-таблицу с spinlock для каждого шарда и циклы обработки событий на epoll/kqueue.

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

  • Заменить экземпляр Redis или Memcache в сервисе, чувствительном к задержкам, не меняя код клиента.
  • Встроить быстрый кеш ключ-значение непосредственно в приложение на C или C++.
  • Использовать curl или psql для быстрой проверки и изменения значений в кеше во время разработки.

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

  1. 1

    Соберите программу pogocache из исходного кода

    make
  2. 2

    Запустите сервер на localhost, порт 9401

    ./pogocache
  3. 3

    Подключитесь с помощью curl, чтобы сохранить и прочитать значение

    curl -X PUT -d "my value" http://localhost:9401/mykey

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

  • Программа разработана и протестирована только для 64-разрядных Linux и macOS.
  • В README не описана поддержка Windows.

Темы

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

Что такое pogocache?
Низколатентный кэширующий сервер на C с поддержкой протоколов Memcache, Redis/Valkey, HTTP и Postgres, который можно встроить в программу как один C-файл. Pogocache — кэширующий сервер, рассчитанный на низкую задержку и небольшую нагрузку на CPU при обработке запросов. Он принимает подключения по нескольким сетевым протоколам, включая Memcache, Valkey/Redis (RESP), HTTP и Postgres, поэтому к нему можно без изменений подключаться существующими инструментами и библиотеками, например curl, redis-cli и psql.
pogocache можно использовать бесплатно? Какая у него лицензия?
pogocache распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
pogocache всё ещё поддерживается?
Обновлялся за последние 6 месяцев. Последний коммит в pogocache — 5 авг. 2026 г..
Для чего можно использовать pogocache?
Заменить экземпляр Redis или Memcache в сервисе, чувствительном к задержкам, не меняя код клиента. Встроить быстрый кеш ключ-значение непосредственно в приложение на C или C++. Использовать curl или psql для быстрой проверки и изменения значений в кеше во время разработки.
Как установить pogocache?
Соберите программу pogocache из исходного кода: make Запустите сервер на localhost, порт 9401: ./pogocache Подключитесь с помощью curl, чтобы сохранить и прочитать значение: curl -X PUT -d "my value" http://localhost:9401/mykey
Где скачать pogocache?
Исходный код и инструкции по установке — на GitHub: https://github.com/tidwall/pogocache

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

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