1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fastdfs100-libshmcache

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 9.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 20:01 a89ea35

libshmcache может быть скопирован или модифицирован в соответствии с условиями лицензии BSD.

libshmcache — это кэш локальной разделяемой памяти для нескольких процессов. Это высокопроизводительная библиотека, поскольку механизм чтения не использует блокировки. libshmcache в 100+ раз быстрее, чем удалённый интерфейс, такой как Redis.

Этот проект содержит библиотеку C, расширение PHP и оболочку Java JNI.

Его функции с высокой производительностью включают:

  • блокировка мьютекса pthread при записи, чтение без блокировок;
  • использование хеш-таблицы для быстрой установки, получения и удаления;
  • использование пула объектов (очередь FIFO) для выделения хэш/KV-записей;
  • использование стримингового/блочного распределителя буфера. В стриминге памяти выделение буфера значений происходит по порядку. Только уменьшайте используемый размер распределителя при освобождении буфера значений. Переиспользуйте весь стриминг памяти/распределитель, когда его используемый размер достигает нуля после освобождения памяти;
  • используйте алгоритм исключения FIFO вместо LRU.

Стабильные функции включают:

  • обнаружение взаимоблокировки и автоматическая разблокировка, вызванные другим зависшим процессом;
  • проверка некоторых ключевых полей на согласованность при инициализации, старые общие воспоминания должны быть очищены и повторно инициализированы, когда связанные с памятью параметры изменились;
  • добавление времени ожидания, чтобы избежать чтения другими процессами грязных данных при переработке более одной действительной (не истёкшей) хэш/KV-записи.

Другие функции:

  • поддержка связанных процессов (таких как родительский процесс и подпроцессы) и несвязанных процессов (например, php-fpm и php CLI, два процесса php CLI и т. д.);
  • постепенное выделение сегмента буфера значений по мере необходимости, это контролируется параметром конфигурации segment_size;
  • предоставление обильной статистической информации: счётчики для установки, получения и удаления, статистика очистки памяти, статистика блокировок и т.д.;
  • поддержка атомарного увеличения;
  • расширение PHP поддерживает несколько сериализаторов: igbinary, msgpack, php. Эти сериализаторы могут сосуществовать в общей памяти.

Утилитарные команды в каталоге src/tools, в /usr/bin/ после make && make install:

  • shmcache_set: установить ключ;
  • shmcache_get: получить ключ;
  • shmcache_delete: удалить ключ;
  • shmcache_remove_all: удалить общую память;
  • shmcache_stats: показать статистику общей памяти.

Примечание: размер ключа не может превышать 64 байта.

Расширение libshmcache PHP поставляется в каталоге php-shmcache, поддерживает PHP 5 и PHP 7.

ShmCache::__construct(string $config_filename[, long $serializer = ShmCache::SERIALIZER_IGBINARY]):

  • @param config_filename: имя файла конфигурации, например conf/libshmcache.conf;
  • @param serializer: тип сериализатора:
    • ShmCache::SERIALIZER_IGBINARY для igbinary, сериализатор по умолчанию;
    • ShmCache::SERIALIZER_MSGPACK для msgpack;
    • ShmCache::SERIALIZER_PHP для сериализатора php;
  • @throws ShmCacheException, если сериализатор не включён;
  • пример: $cache = new ShmCache("/etc/libshmcache.conf");
  • примечание: расширения igbinary и msgpack PHP должны быть включены перед использованием.

boolean ShmCache::set(string $key, mixed $value, long $ttl):

  • @param key: ключ, должен быть строковой переменной;
  • @param value: значение, любая переменная PHP;
  • @param ttl: время ожидания/срок действия в секундах, например, 600 для десяти минут, ShmCache::NEVER_EXPIRED для никогда не истекающего срока действия;
  • возвращает true в случае успеха, false в случае неудачи;
  • @throws ShmCacheException, если $value равно false;
  • пример: $cache->set($key, $value, 300);

long ShmCache::incr(string $key, long $increment, long $ttl):

  • описание: атомарное увеличение;
  • @param ключ: ключ, должен быть строковой переменной;
  • @param increment: целое число приращения, может быть отрицательным, например -1;
  • @param ttl: срок действия/время ожидания в секундах;
  • возвращает значение после увеличения, false в случае сбоя.

mixed ShmCache::get(string $key[, boolean $returnExpired = false]):

  • @param ключ: ключ, должен быть строковой переменной;

  • @param returnExpired: если вернуть просроченный ключ/значение;

  • возвращает смешанное значение в случае успеха, false, если ключ не существует или истёк срок действия. boolean ShmCache::setExpires(string $key, long $expires)

  • Параметр key — ключ, должен быть строковой переменной.

  • Параметр expires — время истечения срока действия (временная метка Unix, например, 1591347245). Для обозначения никогда не истекающего срока используется значение ShmCache::NEVER_EXPIRED.

Возвращает true в случае успеха, false, если ключ не существует, срок действия истёк или произошла другая ошибка. Выбрасывает исключение ShmCacheException, если expires имеет недопустимое значение. Пример использования:

$cache->setExpires($key, 1591347245);

boolean ShmCache::setTTL(string $key, long $ttl)

  • Параметр key — ключ, должен быть строковой переменной.
  • Параметр ttl — тайм-аут / срок действия в секундах, например, 600 для десяти минут, ShmCache::NEVER_EXPIRED — никогда не истекает.

Возвращает true, если операция выполнена успешно, и false при отсутствии ключа, истечении срока действия или другой ошибке. Выбрасывает исключение ShmCacheException при недопустимом значении ttl. Пример использования:

$cache->setTTL($key, 300);

boolean ShmCache::delete(string $key)

  • Параметр key — ключ, должен быть строковой переменной.

Возвращает true, если удаление выполнено успешно, и false, если произошла ошибка. Пример использования:

$cache->delete($key);

array ShmCache::stats()

Возвращает массив со статистикой. Пример использования:

echo json_encode($cache->stats(), JSON_PRETTY_PRINT);

boolean ShmCache::clear()

Очищает хеш-таблицу. Функция удаляет все ключи из кэша, поэтому использовать её следует с осторожностью. Возвращает true, если очистка выполнена успешно, и false, если возникла ошибка.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/fastdfs100-libshmcache.git
git@api.gitlife.ru:oschina-mirror/fastdfs100-libshmcache.git
oschina-mirror
fastdfs100-libshmcache
fastdfs100-libshmcache
master