chxj1992 / hashring
Consistent hashing "hashring" implementation in php (using the same algorithm as libketama)
Installs: 66 259
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 3
Forks: 2
Open Issues: 1
Type:project
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-12-05 01:08:44 UTC
README
Implements consistent hashing that can be used when the number of server nodes can increase or decrease (like in memcached). The hashing ring is built using the same algorithm as libketama.
Inspired by a golang hashring library serialx/hashring.
Using
Install ::
composer require chxj1992/hashring:~1.0
Basic example usage ::
$memcacheServers = ["192.168.0.246:11212", "192.168.0.247:11212", "192.168.0.249:11212"]; $hashRing = new \Chxj1992\HashRing\HashRing($memcacheServers); $server = $ring->getNode("my_key");
Using weights example ::
$weights = ["192.168.0.246:11212" => 1, "192.168.0.247:11212" => 2, "192.168.0.249:11212" => 1]; $hashRing = new \Chxj1992\HashRing\HashRing($weights); $server = $hashRing->getNode("my_key");
Adding and removing nodes example ::
$memcacheServers = ["192.168.0.246:11212", "192.168.0.247:11212", "192.168.0.249:11212"]; $hashRing = new \Chxj1992\HashRing\HashRing($memcacheServers); $hashRing = $hashRing->removeNode("192.168.0.246:11212"); $hashRing = $hashRing->addNode("192.168.0.250:11212"); $server = $hashRing->getNode("my_key");