Skip to content
/ flexihash Public

Flexihash is a small PHP library which implements consistent hashing.

License

Notifications You must be signed in to change notification settings

pda/flexihash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

8403c28 · Oct 15, 2021

History

79 Commits
Oct 14, 2021
Jul 25, 2020
Apr 22, 2016
Oct 16, 2015
Jul 25, 2020
Apr 22, 2016
Apr 15, 2008
Aug 12, 2020
Jul 25, 2020
Jul 25, 2020
Jul 25, 2020
Nov 8, 2015
Nov 8, 2015

Repository files navigation

Flexihash

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 flexihash/flexihash

or in your composer.json

{
    "require": {
        "flexihash/flexihash": "^3.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

Further Reading

About

Flexihash is a small PHP library which implements consistent hashing.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages