myphps/flexhash

Flexihash is a small PHP library which implements consistent hashing

v1.1 2022-10-11 10:10 UTC

This package is auto-updated.

Last update: 2024-10-27 05:57:26 UTC


README

Build Status Coverage Status

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

Further Reading