bcremer / flexihash
Flexihash is a small PHP library which implements consistent hashing
v4.0.0
2024-11-18 08:24 UTC
Requires
- php: >= 8.2.0
Requires (Dev)
- phpunit/phpunit: ^11
- squizlabs/php_codesniffer: ^3.11
Conflicts
README
Flexihash is a small PHP library which implements consistent hashing, which is most useful in distributed caching.
Note
This repo is a fork of https://github.com/pda/flexihash which had no release since 2020.
Installation
Composer is the recommended installation technique. You can find flexihash on Packagist so installation is as easy as
composer require bcremer/flexihash
or in your composer.json
{ "require": { "bcremer/flexihash": "^4.0.0" } }
Usage
$hash = new Flexihash(); // bulk add $hash->addTargets(['cache-1', 'cache-2', 'cache-3']); // simple lookup $hash->lookup('object-a'); // "cache-1" $hash->lookup('object-b'); // "cache-2" // add and remove $hash ->addTarget('cache-4') ->removeTarget('cache-1'); // lookup with next-best fallback (for redundant writes) $hash->lookupList('object', 2); // ["cache-2", "cache-4"] // remove cache-2, expect object to hash to cache-4 $hash->removeTarget('cache-2'); $hash->lookup('object'); // "cache-4"
Tests
Unit Test
% vendor/bin/phpunit
Benchmark Test
% vendor/bin/phpunit tests/BenchmarkTest.php