myphps / flexhash
Flexihash is a small PHP library which implements consistent hashing
v1.1
2022-10-11 10:10 UTC
Requires
- php: >=7.0.0
Requires (Dev)
- phpunit/phpunit: ^7
This package is auto-updated.
Last update: 2024-10-27 05:57:26 UTC
README
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.
Installation
Composer is the recommended installation technique. You can find flexihash on Packagist so installation is as easy as
composer require myphps/flexihash
or in your composer.json
{ "require": { "myphps/flexhash": "^1.0" } }
Usage
$hash = new FlexHash(); // bulk add $hash->addNodes(['cache-1', 'cache-2', 'cache-3']); // simple lookup $hash->lookup('object-a'); // "cache-1" $hash->lookup('object-b'); // "cache-2" // add and remove $hash ->addNode('cache-4') ->removeNode('cache-1'); // lookup with next-best fallback (for redundant writes) $hash->getNodes('object', 2); // ["cache-2", "cache-4"] // remove cache-2, expect object to hash to cache-4 $hash->removeNode('cache-2'); $hash->lookup('object'); // "cache-4"
Tests
Unit Test
% vendor/bin/phpunit
Benchmark Test
% vendor/bin/phpunit tests/BenchmarkTest.php