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.