Flexihash is a small PHP library which implements consistent hashing, which is most useful in distributed caching. It requires PHP5 and uses PHPUnit for unit testing.
Composer is the recommended installation technique. You can find flexihash on Packagist so installation is as easy as
composer require flexihash/flexihash
or in your composer.json
{
"require": {
"flexihash/flexihash": "^3.0.0"
}
}
$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"
% vendor/bin/phpunit
% vendor/bin/phpunit tests/BenchmarkTest.php