NAME
Algorithm::ConsistentHash::Ketama - Ketama Consistent Hashing for Perl (XS)
SYNOPSIS
use Algorithm::ConsistentHash::Ketama;
my $ketama = Algorithm::ConsistentHash::Ketama->new();
$ketama->add_bucket( $key1, $weight1 );
$ketama->add_bucket( $key2, $weight2 );
$ketama->add_bucket( $key3, $weight3 );
$ketama->add_bucket( $key4, $weight4 );
my $key = $ketama->hash( $thing );
DESCRIPTION
WARNING: Alpha quality code -- and I wrote it for the heck of it, so no guarantees as of yet. Patches, tests welcome.
This module implements just the libketama algorithm. You can specify a list of "buckets", and then you can get the corresponding bucket name back when you hash a string.
METHODS
new
Creates a new instance of Algorithm::ConsistentHash::Ketama
add_bucket( $key, $weight )
Adds a bucket to the list. $key
is the name of the bucket, and $weight
denotes the weight of the $key
.
hash( $string )
Returns the corresponding bucket name (which you gave when you did add_bucket).
remove_bucket( $key )
Removes the given bucket from the list
buckets()
Returns a list of Algorithm::ConsistentHash::Ketama::Bucket objects
LICENSE AND COPYRIGHT
Portions of this distribution are derived from libketama, which is:
Copyright (C) 2007 by
Christian Muehlhaeuser C<< <chris@last.fm> >>
Richard Jones C<< <rj@last.fm> >>
Affected portions are licensed under GPL v2.
The rest of the code which is written by Daisuke Maki are available under Artistic License v2, and is:
Copyright (C) 2010 Daisuke Maki C<< <daisuke@endeworks.jp> >>
Please see the file xs/Ketama.xs for more detail.