Recommend this page to a friend! |
Download |
Info | Files | Install with Composer | Download | Reputation | Support forum | Blog | Links |
Last Updated | Ratings | Unique User Downloads | Download Rankings | |||||
2024-12-09 (Yesterday) | Not enough user ratings | Total: 5 This week: 5 | All time: 11,501 This week: 11 |
Version | License | PHP version | Categories | |||
consistent-hash 1.1.0 | MIT/X Consortium ... | 8.2.0 | Data types, PHP 8 |
Description | Author | |
This package can store values in a table using consistent hashing. |
Esi\ConsistentHash is a small PHP library which implements consistent hashing, which is most useful in distributed caching.
> [!NOTE] > This library is a fork of https://github.com/pda/flexihash v3.0.0. The original library has not seen any releases since 2020.
You can install the package via composer:
$ composer require esi/consistent-hash
use Esi\ConsistentHash;
$hash = new ConsistentHash();
// 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');
$hash->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"
Performance can be tested with PHPBench.
$ git clone https://github.com/ericsizemore/consistent-hash.git
$ cd consistent-hash
$ ./vendor/bin/phpbench run --report=aggregate --iterations=4 --tag=branch_main
Or via composer:
$ composer run-script benchmark
There is also an option to view results as a bar chart:
$ composer run-script benchmark:chart
With opcache enabled:
# Normal, aggregate report
$ composer run-script benchmark:opcache
# Bar chart
$ composer run-script benchmark:chart:opcache
Benchmarks are also available through PHPUnit, though it is a bit more rudimentary. To see these benchmarks, run:
$ composer run-script phpunit:benchmark
And thanks to the library this is a fork of, flexihash/flexihash:
See CONTRIBUTING.
Bugs and feature requests are tracked on GitHub.
See backward-compatibility.md for more information on Backwards Compatibility.
See the CHANGELOG for more information on what has changed recently.
See the LICENSE for more information on the license that applies to this project.
See the ROADMAP for more information what is currently being planned.
See SECURITY for more information on the security disclosure process.
Files (37) |
File | Role | Description | ||
---|---|---|---|---|
.github (2 files, 2 directories) | ||||
src (1 file, 2 directories) | ||||
tests (2 files, 2 directories) | ||||
.php-cs-fixer.dist.php | Example | Example script | ||
.scrutinizer.yml | Data | Auxiliary data | ||
backward-compatibility.md | Data | Auxiliary data | ||
CHANGELOG.md | Data | Auxiliary data | ||
CODE_OF_CONDUCT.md | Data | Auxiliary data | ||
composer.json | Data | Auxiliary data | ||
composer.lock | Data | Auxiliary data | ||
CONTRIBUTING.md | Data | Auxiliary data | ||
LICENSE | Lic. | License text | ||
phpbench.json | Data | Auxiliary data | ||
phpstan.neon | Data | Auxiliary data | ||
phpunit.xml | Data | Auxiliary data | ||
psalm.xml | Data | Auxiliary data | ||
README.md | Doc. | Documentation | ||
renovate.json | Data | Auxiliary data | ||
ROADMAP.md | Data | Auxiliary data | ||
SECURITY.md | Data | Auxiliary data |
Files (37) | / | .github |
File | Role | Description | ||
---|---|---|---|---|
ISSUE_TEMPLATE (3 files) | ||||
workflows (2 files) | ||||
FUNDING.yml | Data | Auxiliary data | ||
pull_request_template.md | Data | Auxiliary data |
Files (37) | / | .github | / | ISSUE_TEMPLATE |
File | Role | Description |
---|---|---|
1-bug_report.yml | Data | Auxiliary data |
2-feature_request.yml | Data | Auxiliary data |
config.yml | Data | Auxiliary data |
Files (37) | / | .github | / | workflows |
File | Role | Description |
---|---|---|
continuous-integration.yml | Data | Auxiliary data |
release.yml | Data | Auxiliary data |
Files (37) | / | src |
File | Role | Description | ||
---|---|---|---|---|
Exception (1 file) | ||||
Hasher (6 files) | ||||
ConsistentHash.php | Class | Class source |
Files (37) | / | src | / | Hasher |
File | Role | Description |
---|---|---|
Crc32Hasher.php | Class | Class source |
Fnv1AHasher.php | Class | Class source |
HasherInterface.php | Class | Class source |
Md5Hasher.php | Class | Class source |
Murmur3Hasher.php | Class | Class source |
Xxh32Hasher.php | Class | Class source |
Files (37) | / | tests |
File | Role | Description | ||
---|---|---|---|---|
Bench (1 file) | ||||
Hasher (2 files) | ||||
BenchmarkTest.php | Class | Class source | ||
ConsistentHashTest.php | Class | Class source |
Files (37) | / | tests | / | Hasher |
File | Role | Description |
---|---|---|
HasherTest.php | Class | Class source |
MockHasher.php | Class | Class source |
The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page. |
Install with Composer |
Version Control | Unique User Downloads | Download Rankings | |||||||||||||||
100% |
|
|
Applications that use this package |
If you know an application of this package, send a message to the author to add a link here.